window.TMAP_AUTHKEY = "be50c7492442ecf4e61ca7bd578d6b8b";
window.T = window.T || {};
(function () {
    function each(t, i) {
        for (var n in t) t.hasOwnProperty(n) && i(t[n], n, t)
    }

    function find(t, i) {
        if (t.length) {
            for (var n = 0; n < t.length; n++) if (i(t[n])) return t[n]
        } else for (var e in t) if (t.hasOwnProperty(e) && i(t[e])) return t[e]
    }

    function first(t) {
        for (var i in t) if (t.hasOwnProperty(i)) return t[i]
    }

    function length(t) {
        var i = 0;
        for (var n in t) t.hasOwnProperty(n) && i++;
        return i
    }

    function prepend(t, i) {
        t.children.length ? t.insertBefore(i, t.children[0]) : t.appendChild(i)
    }

    T.Version = "4.1.5", T.q = {
        W: function (t, i) {
            switch (arguments.length) {
                case 1:
                    return parseInt(Math.random() * t + 1);
                case 2:
                    return parseInt(Math.random() * (i - t + 1) + t);
                default:
                    return 0
            }
        }
    }, T.Protocol = {
        value: null, protocol: function () {
            var t = "http", i = document.location.protocol;
            "https:" == i && (t = "https"), T.Protocol.value = t + "://"
        }
    }, T.Protocol.protocol(), T.tk = "tk=" + window.TMAP_AUTHKEY + "&", T.Domain = "com", T.DomainType = 1, T.DomainFun = function () {
        1 == T.DomainType ? T.Domain = "gov.cn" : 2 == T.DomainType && (T.Domain = "com")
    }, T.DomainFun(), T.w = {
        TMAP_AUTHKEY: window.TMAP_AUTHKEY,
        E: T.Protocol.value + "api.tianditu." + T.Domain,
        e: T.Protocol.value + "api.tianditu." + T.Domain + "/v4.0/image",
        IPSERVER: T.Protocol.value + "map.tianditu.gov.cn/data/getCityName",
        R: T.Protocol.value + "api.tianditu." + T.Domain + "/apiserver/ajaxproxy?proxyReqUrl=",
        r: function () {
            return T.Protocol.value + "t" + T.q.W(0, 7) + ".tianditu." + T.Domain + "/vec_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&" + T.tk
        },
        T: function () {
            return T.Protocol.value + "t" + T.q.W(0, 7) + ".tianditu." + T.Domain + "/cva_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&" + T.tk
        },
        t: function () {
            return T.Protocol.value + "t" + T.q.W(0, 7) + ".tianditu." + T.Domain + "/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&" + T.tk
        },
        Y: function () {
            return T.Protocol.value + "t" + T.q.W(0, 7) + ".tianditu." + T.Domain + "/cva_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cva&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&" + T.tk
        },
        U: function () {
            return T.Protocol.value + "t" + T.q.W(0, 7) + ".tianditu." + T.Domain + "/img_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&" + T.tk
        },
        u: function () {
            return T.Protocol.value + "t" + T.q.W(0, 7) + ".tianditu." + T.Domain + "/cia_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&" + T.tk
        },
        I: function () {
            return T.Protocol.value + "t" + T.q.W(0, 7) + ".tianditu." + T.Domain + "/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&" + T.tk
        },
        i: function () {
            return T.Protocol.value + "t" + T.q.W(0, 7) + ".tianditu." + T.Domain + "/cia_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&" + T.tk
        },
        O: function () {
            return T.Protocol.value + "t" + T.q.W(0, 7) + ".tianditu." + T.Domain + "/ter_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ter&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&" + T.tk
        },
        o: function () {
            return T.Protocol.value + "t" + T.q.W(0, 7) + ".tianditu." + T.Domain + "/cta_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cta&STYLE=default&TILEMATRIXSET=c&FORMAT=tiles&" + T.tk
        },
        P: function () {
            return T.Protocol.value + "t" + T.q.W(0, 7) + ".tianditu." + T.Domain + "/ter_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ter&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&" + T.tk
        },
        p: function () {
            return T.Protocol.value + "t" + T.q.W(0, 7) + ".tianditu." + T.Domain + "/cta_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cta&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&" + T.tk
        },
        A: ["/v4.0/components.js", "/v4.0/service.js", "/v4.0/military.js"],
        a: ["/v4.0/css/tianditu4.0.css"],
        TMAP_DEFAULT_MAPTYPES: []
    }, window.T_ANCHOR_TOP_LEFT = "topleft", window.T_ANCHOR_TOP_RIGHT = "topright", window.T_ANCHOR_BOTTOM_LEFT = "bottomleft", window.T_ANCHOR_BOTTOM_RIGHT = "bottomright", window.TMAP_NORMAL_MAP = null, window.TMAP_SATELLITE_MAP = null, window.TMAP_HYBRID_MAP = null, window.TMAP_TERRAIN_MAP = null, window.TMAP_TERRAIN_HYBRID_MAP = null, T.S = {
        extend: function (t) {
            var i, n, e, o;
            for (n = 1, e = arguments.length; n < e; n++) {
                o = arguments[n];
                for (i in o) t[i] = o[i]
            }
            return t
        }, s: Object.create || function () {
            function t() {
            }

            return function (i) {
                return t.prototype = i, new t
            }
        }(), D: function (t, i) {
            var n = Array.prototype.slice;
            if (t.D) return t.D.apply(t, n.call(arguments, 1));
            var e = n.call(arguments, 2);
            return function () {
                return t.apply(i, e.length ? e.concat(n.call(arguments)) : arguments)
            }
        }, d: function (t) {
            return t.F = t.F || ++T.S.f, t.F
        }, f: 0, G: function (t, i, n) {
            var e, o, s, r;
            return r = function () {
                e = !1, o && (s.apply(n, o), o = !1)
            }, s = function () {
                e ? o = arguments : (t.apply(n, arguments), setTimeout(r, i), e = !0)
            }
        }, g: function (t, i, n) {
            var e = i[1], o = i[0], s = e - o;
            return t === e && n ? t : ((t - o) % s + s) % s + o
        }, H: function () {
            return !1
        }, h: function (t, i) {
            var n = Math.pow(10, i || 5);
            return Math.round(t * n) / n
        }, J: function (t) {
            return t.J ? t.J() : t.replace(/^\s+|\s+$/g, "")
        }, j: function (t) {
            return T.S.J(t).split(/\s+/)
        }, setOptions: function (t, i) {
            t.hasOwnProperty("options") || (t.options = t.options ? T.S.s(t.options) : {});
            for (var n in i) t.options[n] = i[n];
            return t.options
        }, K: function (t, i, n) {
            var e = [];
            for (var o in t) e.push(encodeURIComponent(n ? o.toUpperCase() : o) + "=" + encodeURIComponent(t[o]));
            return (i && i.indexOf("?") !== -1 ? "&" : "?") + e.join("&")
        }, k: function (t, i) {
            return t.replace(T.S.L, function (t, n) {
                var e = i[n];
                return void 0 === e || "function" == typeof e && (e = e(i)), e
            })
        }, L: /\{ *([\w_\-]+) *\}/g, l: Array.l || function (t) {
            return "[object Array]" === Object.prototype.toString.call(t)
        }, indexOf: function (t, i) {
            for (var n = 0; n < t.length; n++) if (t[n] === i) return n;
            return -1
        }, Z: ""
    }, function () {
        function t(t) {
            return window["webkit" + t] || window["moz" + t] || window["ms" + t]
        }

        function i(t) {
            var i = +new Date, e = Math.max(0, 16 - (i - n));
            return n = i + e, window.setTimeout(t, e)
        }

        var n = 0, e = window.requestAnimationFrame || t("RequestAnimationFrame") || i,
            o = window.cancelAnimationFrame || t("CancelAnimationFrame") || t("CancelRequestAnimationFrame") || function (t) {
                window.clearTimeout(t)
            };
        T.S.C = function (t, n, o) {
            return o && e === i ? void t.call(n) : e.call(window, T.D(t, n))
        }, T.S.V = function (t) {
            t && o.call(window, t)
        }
    }(), T.extend = T.S.extend, T.D = T.S.D, T.d = T.S.d, T.setOptions = T.S.setOptions, T.c = function () {
    }, T.c.extend = function (t) {
        var i = function () {
            this.initialize && this.initialize.apply(this, arguments), this.B()
        }, n = i.__super__ = this.prototype, e = T.S.s(n);
        e.constructor = i, i.prototype = e;
        for (var o in this) this.hasOwnProperty(o) && "prototype" !== o && (i[o] = this[o]);
        return t.v && (T.extend(i, t.v), delete t.v), t.includes && (T.S.extend.apply(null, [e].concat(t.includes)), delete t.includes), e.options && (t.options = T.S.extend(T.S.s(e.options), t.options)), T.extend(e, t), e.N = [], e.B = function () {
            if (!this.b) {
                n.B && n.B.call(this), this.b = !0;
                for (var t = 0, i = e.N.length; t < i; t++) e.N[t].call(this)
            }
        }, i
    }, T.c.M = function (t) {
        return T.extend(this.prototype, t), this
    }, T.c.n = function (t) {
        return T.extend(this.prototype.options, t), this
    }, T.c._ = function (t) {
        var i = Array.prototype.slice.call(arguments, 1), n = "function" == typeof t ? t : function () {
            this[t].apply(this, i)
        };
        return this.prototype.N = this.prototype.N || [], this.prototype.N.push(n), this
    }, T.m = T.c.extend({
        on: function (t, i, n) {
            if ("object" == typeof t) for (var e in t) this.QQ(e, t[e], i); else {
                t = T.S.j(t);
                for (var o = 0, s = t.length; o < s; o++) this.QQ(t[o], i, n)
            }
            return this
        }, off: function (t, i, n) {
            if (t) if ("object" == typeof t) for (var e in t) this.WQ(e, t[e], i); else {
                t = T.S.j(t);
                for (var o = 0, s = t.length; o < s; o++) this.WQ(t[o], i, n)
            } else delete this.qQ;
            return this
        }, QQ: function (t, i, n) {
            var e = this.qQ = this.qQ || {}, o = n && n !== this && T.d(n);
            if (o) {
                var s = t + "_idx", r = t + "_len", h = e[s] = e[s] || {}, a = T.d(i) + "_" + o;
                h[a] || (h[a] = {fn: i, ctx: n}, e[r] = (e[r] || 0) + 1)
            } else e[t] = e[t] || [], e[t].push({fn: i})
        }, WQ: function (t, i, n) {
            var e, o, s, r, h = this.qQ, a = t + "_idx", u = t + "_len";
            if (h) {
                if (!i) {
                    o = h[a];
                    for (s in o) o[s].fn = T.S.H;
                    for (o = h[t] || [], s = 0, r = o.length; s < r; s++) o[s].fn = T.S.H;
                    return delete h[t], delete h[a], void delete h[u]
                }
                var c, l = n && n !== this && T.d(n);
                if (l) c = T.d(i) + "_" + l, o = h[a], o && o[c] && (e = o[c], delete o[c], h[u]--); else if (o = h[t]) {
                    for (s = 0, r = o.length; s < r; s++) if (o[s].fn === i) {
                        e = o[s], o.splice(s, 1);
                        break
                    }
                    0 === o.length && delete h[t]
                }
                e && (e.fn = T.S.H)
            }
        }, wQ: function (t, i, n) {
            if (!this.EQ(t, n)) return this;
            var e = T.S.extend({}, i, {type: t, target: this}), o = this.qQ;
            if (o) {
                var s, r, h, a, u = o[t + "_idx"];
                if (o[t]) for (h = o[t].slice(), s = 0, r = h.length; s < r; s++) h[s].fn.call(this, e);
                for (a in u) u[a].fn.call(u[a].ctx, e)
            }
            return n && this.eQ(e), this
        }, trigger: function (t, i, n) {
            return this.wQ(t, i, n), this
        }, EQ: function (t, i) {
            var n = this.qQ;
            if (n && (n[t] || n[t + "_len"])) return !0;
            if (i) for (var e in this.RQ) if (this.RQ[e].EQ(t, i)) return !0;
            return !1
        }, rQ: function (t, i, n) {
            if ("object" == typeof t) {
                for (var e in t) this.rQ(e, t[e], i);
                return this
            }
            var o = T.D(function () {
                this.off(t, i, n).off(t, o, n)
            }, this);
            return this.on(t, i, n).on(t, o, n)
        }, TQ: function (t) {
            return this.RQ = this.RQ || {}, this.RQ[T.d(t)] = t, this
        }, tQ: function (t) {
            return this.RQ && delete this.RQ[T.d(t)], this
        }, eQ: function (t) {
            for (var i in this.RQ) this.RQ[i].wQ(t.type, T.extend({layer: t.target}, t), !0)
        }
    });
    var pro = T.m.prototype;
    pro.addEventListener = pro.on, pro.removeEventListener = pro.YQ = pro.off, pro.UQ = pro.rQ, pro.uQ = pro.trigger, pro.IQ = pro.EQ, T.iQ = {OQ: pro}, function () {
        var t = navigator.userAgent.toLowerCase(), i = document.documentElement, n = "ActiveXObject" in window,
            e = "Microsoft Internet Explorer" == navigator.appName && "MSIE8.0" == navigator.appVersion.split(";")[1].replace(new RegExp("[ ]", "g"), ""),
            o = "Microsoft Internet Explorer" == navigator.appName && "MSIE7.0" == navigator.appVersion.split(";")[1].replace(new RegExp("[ ]", "g"), ""),
            s = "Microsoft Internet Explorer" == navigator.appName && "MSIE6.0" == navigator.appVersion.split(";")[1].replace(new RegExp("[ ]", "g"), ""),
            r = t.indexOf("webkit") !== -1, h = t.indexOf("phantom") !== -1, a = t.search("android [23]") !== -1,
            u = t.indexOf("chrome") !== -1, c = t.indexOf("gecko") !== -1 && !r && !window.opera && !n,
            l = 0 === navigator.platform.indexOf("Win"),
            f = "undefined" != typeof orientation || t.indexOf("mobile") !== -1,
            d = !window.PointerEvent && window.MSPointerEvent, p = window.PointerEvent || d,
            m = n && "transition" in i.style,
            v = "WebKitCSSMatrix" in window && "m11" in new window.WebKitCSSMatrix && !a,
            w = "MozPerspective" in i.style, y = "OTransition" in i.style,
            g = !window.L_NO_TOUCH && (p || "ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch);
        T.oQ = {
            ie: n,
            ie8: e,
            ie7: o,
            ie6: s,
            ielt9: n && !document.addEventListener,
            edge: "msLaunchUri" in navigator && !("documentMode" in document),
            webkit: r,
            gecko: c,
            android: t.indexOf("android") !== -1,
            android23: a,
            chrome: u,
            safari: !u && t.indexOf("safari") !== -1,
            win: l,
            ie3d: m,
            webkit3d: v,
            gecko3d: w,
            opera12: y,
            any3d: !window.L_DISABLE_3D && (m || v || w) && !y && !h,
            mobile: f,
            mobileWebkit: f && r,
            mobileWebkit3d: f && v,
            mobileOpera: f && window.opera,
            mobileGecko: f && c,
            touch: !!g,
            msPointer: !!d,
            pointer: !!p,
            retina: (window.PQ || window.screen.deviceXDPI / window.screen.logicalXDPI) > 1
        }
    }(), T.Point = function (t, i, n) {
        this.x = n ? Math.round(t) : t, this.y = n ? Math.round(i) : i
    }, T.Point.prototype = {
        pQ: function () {
            return new T.Point(this.x, this.y)
        }, AQ: function (t) {
            return this.pQ().aQ(T.SQ(t))
        }, aQ: function (t) {
            return this.x += t.x, this.y += t.y, this
        }, sQ: function (t) {
            return this.pQ().DQ(T.SQ(t))
        }, DQ: function (t) {
            return this.x -= t.x, this.y -= t.y, this
        }, dQ: function (t) {
            return this.pQ().FQ(t)
        }, FQ: function (t) {
            return this.x /= t, this.y /= t, this
        }, fQ: function (t) {
            return this.pQ().GQ(t)
        }, GQ: function (t) {
            return this.x *= t, this.y *= t, this
        }, gQ: function (t) {
            return new T.Point(this.x * t.x, this.y * t.y)
        }, HQ: function (t) {
            return new T.Point(this.x / t.x, this.y / t.y)
        }, hQ: function () {
            return this.pQ().JQ()
        }, JQ: function () {
            return this.x = Math.round(this.x), this.y = Math.round(this.y), this
        }, jQ: function () {
            return this.pQ().KQ()
        }, KQ: function () {
            return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this
        }, kQ: function () {
            return this.pQ().LQ()
        }, LQ: function () {
            return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this
        }, distanceTo: function (t) {
            t = T.SQ(t);
            var i = t.x - this.x, n = t.y - this.y;
            return Math.sqrt(i * i + n * n)
        }, equals: function (t) {
            return t = T.SQ(t), t.x === this.x && t.y === this.y
        }, contains: function (t) {
            return t = T.SQ(t), Math.abs(t.x) <= Math.abs(this.x) && Math.abs(t.y) <= Math.abs(this.y)
        }, lQ: function () {
            return "Point(" + T.S.h(this.x) + ", " + T.S.h(this.y) + ")"
        }
    }, T.SQ = function (t, i, n) {
        return t instanceof T.Point ? t : T.S.l(t) ? new T.Point(t[0], t[1]) : void 0 === t || null === t ? t : "object" == typeof t && "x" in t && "y" in t ? new T.Point(t.x, t.y) : new T.Point(t, i, n)
    }, T.ZQ = function (t, i) {
        if (t) for (var n = i ? [t, i] : t, e = 0, o = n.length; e < o; e++) this.extend(n[e])
    }, T.ZQ.prototype = {
        extend: function (t) {
            return t = T.SQ(t), this.min || this.max ? (this.min.x = Math.min(t.x, this.min.x), this.max.x = Math.max(t.x, this.max.x), this.min.y = Math.min(t.y, this.min.y), this.max.y = Math.max(t.y, this.max.y)) : (this.min = t.pQ(), this.max = t.pQ()), this
        }, getCenter: function (t) {
            return new T.Point((this.min.x + this.max.x) / 2, (this.min.y + this.max.y) / 2, t)
        }, CQ: function () {
            return new T.Point(this.min.x, this.max.y)
        }, VQ: function () {
            return new T.Point(this.max.x, this.min.y)
        }, getSize: function () {
            return this.max.sQ(this.min)
        }, contains: function (t) {
            var i, n;
            return t = "number" == typeof t[0] || t instanceof T.Point ? T.SQ(t) : T.cQ(t), t instanceof T.ZQ ? (i = t.min, n = t.max) : i = n = t, i.x >= this.min.x && n.x <= this.max.x && i.y >= this.min.y && n.y <= this.max.y
        }, intersects: function (t) {
            t = T.cQ(t);
            var i = this.min, n = this.max, e = t.min, o = t.max, s = o.x >= i.x && e.x <= n.x,
                r = o.y >= i.y && e.y <= n.y;
            return s && r
        }, BQ: function (t) {
            t = T.cQ(t);
            var i = this.min, n = this.max, e = t.min, o = t.max, s = o.x > i.x && e.x < n.x,
                r = o.y > i.y && e.y < n.y;
            return s && r
        }, vQ: function () {
            return !(!this.min || !this.max)
        }
    }, T.cQ = function (t, i) {
        return !t || t instanceof T.ZQ ? t : new T.ZQ(t, i)
    }, T.NQ = function (t, i, n, e) {
        this._a = t, this._b = i, this._c = n, this._d = e
    }, T.NQ.prototype = {
        bQ: function (t, i) {
            return this.MQ(t.pQ(), i)
        }, MQ: function (t, i) {
            return i = i || 1, t.x = i * (this._a * t.x + this._b), t.y = i * (this._c * t.y + this._d), t
        }, nQ: function (t, i) {
            return i = i || 1, new T.Point((t.x / i - this._b) / this._a, (t.y / i - this._d) / this._c)
        }
    }, T._Q = {
        mQ: function (t) {
            return "string" == typeof t ? document.getElementById(t) : t
        }, getStyle: function (t, i) {
            var n = t.style[i] || t.currentStyle && t.currentStyle[i];
            if ((!n || "auto" === n) && document.defaultView) {
                var e = document.defaultView.getComputedStyle(t, null);
                n = e ? e[i] : null
            }
            return "auto" === n ? null : n
        }, s: function (t, i, n) {
            var e = document.createElement(t);
            return e.className = i || "", n && n.appendChild(e), e
        }, Qq: function (t) {
            var i = t.parentNode;
            i && i.removeChild(t)
        }, qq: function (t) {
            for (; t.firstChild;) t.removeChild(t.firstChild)
        }, Wq: function (t) {
            t.parentNode.appendChild(t)
        }, wq: function (t) {
            var i = t.parentNode;
            i.insertBefore(t, i.firstChild)
        }, Eq: function (t, i) {
            if (void 0 !== t.classList) return t.classList.contains(i);
            var n = T._Q.eq(t);
            return n.length > 0 && new RegExp("(^|\\s)" + i + "(\\s|$)").test(n)
        }, Rq: function (t, i) {
            if (void 0 !== t.classList) for (var n = T.S.j(i), e = 0, o = n.length; e < o; e++) t.classList.add(n[e]); else if (!T._Q.Eq(t, i)) {
                var s = T._Q.eq(t);
                T._Q.rq(t, (s ? s + " " : "") + i)
            }
        }, Tq: function (t, i) {
            void 0 !== t.classList ? t.classList.remove(i) : T._Q.rq(t, T.S.J((" " + T._Q.eq(t) + " ").replace(" " + i + " ", " ")))
        }, rq: function (t, i) {
            void 0 === t.className.baseVal ? t.className = i : t.className.baseVal = i
        }, eq: function (t) {
            return void 0 === t.className.baseVal ? t.className : t.className.baseVal
        }, setOpacity: function (t, i) {
            "opacity" in t.style ? t.style.opacity = i : "filter" in t.style && T._Q.tq(t, i)
        }, tq: function (t, i) {
            var n = !1, e = "DXImageTransform.Microsoft.Alpha";
            try {
                n = t.filters.item(e)
            } catch (AO) {
                if (1 === i) return
            }
            i = Math.round(100 * i), n ? (n.Enabled = 100 !== i, n.Opacity = i) : t.style.filter += " progid:" + e + "(opacity=" + i + ")"
        }, Yq: function (t) {
            for (var i = document.documentElement.style, n = 0; n < t.length; n++) if (t[n] in i) return t[n];
            return !1
        }, Uq: function (t, i, n) {
            var e = i || new T.Point(0, 0);
            t.style[T._Q.uq] = (T.oQ.ie3d ? "translate(" + e.x + "px," + e.y + "px)" : "translate3d(" + e.x + "px," + e.y + "px,0)") + (n ? " scale(" + n + ")" : "")
        }, setPosition: function (t, i) {
            t._tdt_pos = i, T.oQ.any3d ? T._Q.Uq(t, i) : (t.style.left = i.x + "px", t.style.top = i.y + "px")
        }, getPosition: function (t) {
            return t._tdt_pos || new T.Point(0, 0)
        }
    }, function () {
        T._Q.uq = T._Q.Yq(["bQ", "WebkitTransform", "OTransform", "MozTransform", "msTransform"]);
        var t = T._Q.Iq = T._Q.Yq(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]);
        if (T._Q.iq = "webkitTransition" === t || "OTransition" === t ? t + "End" : "transitionend", "onselectstart" in document) T._Q.Oq = function () {
            T.oq.on(window, "selectstart", T.oq.preventDefault)
        }, T._Q.Pq = function () {
            T.oq.off(window, "selectstart", T.oq.preventDefault)
        }; else {
            var i = T._Q.Yq(["userSelect", "WebkitUserSelect", "OUserSelect", "MozUserSelect", "msUserSelect"]);
            T._Q.Oq = function () {
                if (i) {
                    var t = document.documentElement.style;
                    this.pq = t[i], t[i] = "none"
                }
            }, T._Q.Pq = function () {
                i && (document.documentElement.style[i] = this.pq, delete this.pq)
            }
        }
        T._Q.Aq = function () {
            T.oq.on(window, "dragstart", T.oq.preventDefault)
        }, T._Q.aq = function () {
            T.oq.off(window, "dragstart", T.oq.preventDefault)
        }, T._Q.Sq = function (t) {
            for (; t.tabIndex === -1;) t = t.parentNode;
            t && t.style && (T._Q.sq(), this.Dq = t, this._outlineStyle = t.style.outline, t.style.outline = "none", T.oq.on(window, "keydown", T._Q.sq, this))
        }, T._Q.sq = function () {
            this.Dq && (this.Dq.style.outline = this._outlineStyle, delete this.Dq, delete this._outlineStyle, T.oq.off(window, "keydown", T._Q.sq, this))
        }
    }(), T.dq = function (t, i, n) {
        isNaN(t) || isNaN(i), this.lat = +parseFloat(t).toFixed(5), this.lng = +parseFloat(i).toFixed(5), void 0 !== n && (this.Fq = +n)
    }, T.dq.prototype = {
        equals: function (t, i) {
            if (!t) return !1;
            t = T.fq(t);
            var n = Math.max(Math.abs(this.lat - t.lat), Math.abs(this.lng - t.lng));
            return n <= (void 0 === i ? 1e-9 : i)
        }, lQ: function (t) {
            return "LngLat(" + T.S.h(this.lng, t) + ", " + T.S.h(this.lat, t) + ")"
        }, distanceTo: function (t) {
            return T.gq.Gq.distance(this, T.fq(t))
        }, Hq: function () {
            return T.gq.Gq.hq(this)
        }, Jq: function (t) {
            var i = 180 * t / 40075017, n = i / Math.cos(Math.PI / 180 * this.lat);
            return T.jq([this.lat - i, this.lng - n], [this.lat + i, this.lng + n])
        }, pQ: function () {
            return new T.dq(this.lat, this.lng, this.Fq)
        }, getLng: function () {
            return this.lng
        }, getLat: function () {
            return this.lat
        }
    }, T.fq = function (t, i, n) {
        return t instanceof T.dq ? t : T.S.l(t) && "object" != typeof t[0] ? 3 === t.length ? new T.dq(t[0], t[1], t[2]) : 2 === t.length ? new T.dq(t[0], t[1]) : null : void 0 === t || null === t ? t : "object" == typeof t && "lat" in t ? new T.dq(t.lat, "lng" in t ? t.lng : t.lon, t.Fq) : void 0 === i ? null : new T.dq(t, i, n)
    }, T.LngLat = function (t, i, n) {
        return new T.dq(i, t, n)
    }, T.Kq = function (t, i) {
        if (t) for (var n = i ? [t, i] : t, e = 0, o = n.length; e < o; e++) this.extend(n[e])
    }, T.Kq.prototype = {
        extend: function (t) {
            var i, n, e = this.kq, o = this.Lq;
            if (t instanceof T.dq) i = t, n = t; else {
                if (!(t instanceof T.Kq)) return t ? this.extend(T.fq(t) || T.jq(t)) : this;
                if (i = t.kq, n = t.Lq, !i || !n) return this
            }
            return e || o ? (e.lat = Math.min(i.lat, e.lat), e.lng = Math.min(i.lng, e.lng), o.lat = Math.max(n.lat, o.lat), o.lng = Math.max(n.lng, o.lng)) : (this.kq = new T.dq(i.lat, i.lng), this.Lq = new T.dq(n.lat, n.lng)), this
        }, lq: function (t) {
            var i = this.kq, n = this.Lq, e = Math.abs(i.lat - n.lat) * t, o = Math.abs(i.lng - n.lng) * t;
            return new T.Kq(new T.dq(i.lat - e, i.lng - o), new T.dq(n.lat + e, n.lng + o))
        }, getCenter: function () {
            return new T.dq((this.kq.lat + this.Lq.lat) / 2, (this.kq.lng + this.Lq.lng) / 2)
        }, getSouthWest: function () {
            return this.kq
        }, getNorthEast: function () {
            return this.Lq
        }, Zq: function () {
            return new T.dq(this.Cq(), this.Vq())
        }, cq: function () {
            return new T.dq(this.Bq(), this.vq())
        }, Vq: function () {
            return this.kq.lng
        }, Bq: function () {
            return this.kq.lat
        }, vq: function () {
            return this.Lq.lng
        }, Cq: function () {
            return this.Lq.lat
        }, contains: function (t) {
            t = "number" == typeof t[0] || t instanceof T.dq ? T.fq(t) : T.jq(t);
            var i, n, e = this.kq, o = this.Lq;
            return t instanceof T.Kq ? (i = t.getSouthWest(), n = t.getNorthEast()) : i = n = t, i.lat >= e.lat && n.lat <= o.lat && i.lng >= e.lng && n.lng <= o.lng
        }, intersects: function (t) {
            t = T.jq(t);
            var i = this.kq, n = this.Lq, e = t.getSouthWest(), o = t.getNorthEast(),
                s = o.lat >= i.lat && e.lat <= n.lat, r = o.lng >= i.lng && e.lng <= n.lng;
            return s && r
        }, BQ: function (t) {
            t = T.jq(t);
            var i = this.kq, n = this.Lq, e = t.getSouthWest(), o = t.getNorthEast(),
                s = o.lat > i.lat && e.lat < n.lat, r = o.lng > i.lng && e.lng < n.lng;
            return s && r
        }, Nq: function () {
            return [this.Vq(), this.Bq(), this.vq(), this.Cq()].join(",")
        }, equals: function (t) {
            return !!t && (t = T.jq(t), this.kq.equals(t.getSouthWest()) && this.Lq.equals(t.getNorthEast()))
        }, vQ: function () {
            return !(!this.kq || !this.Lq)
        }
    }, T.jq = function (t, i) {
        return t instanceof T.Kq ? t : new T.Kq(t, i)
    }, T.LngLatBounds = function (t, i) {
        return t instanceof T.Kq ? t : new T.Kq(t, i)
    }, T.bq = {}, T.bq.Mq = {
        nq: function (t) {
            return new T.Point(t.lng, t.lat)
        }, _q: function (t) {
            return new T.dq(t.y, t.x)
        }, bounds: T.cQ([-180, -90], [180, 90])
    }, T.bq.mq = {
        R: 6378137, QW: 85.0511287798, nq: function (t) {
            var i = Math.PI / 180, n = this.QW, e = Math.max(Math.min(n, t.lat), -n), o = Math.sin(e * i);
            return new T.Point(this.R * t.lng * i, this.R * Math.log((1 + o) / (1 - o)) / 2)
        }, _q: function (t) {
            var i = 180 / Math.PI;
            return new T.dq((2 * Math.atan(Math.exp(t.y / this.R)) - Math.PI / 2) * i, t.x * i / this.R)
        }, bounds: function () {
            var t = 6378137 * Math.PI;
            return T.cQ([-t, -t], [t, t])
        }()
    }, T.gq = {
        qW: function (t, i) {
            var n = this.projection.nq(t), e = this.scale(i);
            return this.WW.MQ(n, e)
        }, wW: function (t, i) {
            var n = this.scale(i), e = this.WW.nQ(t, n);
            return this.projection._q(e)
        }, nq: function (t) {
            return this.projection.nq(t)
        }, _q: function (t) {
            return this.projection._q(t)
        }, scale: function (t) {
            return 256 * Math.pow(2, t - T.gq.EW)
        }, EW: 0, zoom: function (t) {
            return Math.log(t / 256) / Math.LN2
        }, eW: function (t) {
            if (this.RW) return null;
            var i = this.projection.bounds, n = this.scale(t), e = this.WW.bQ(i.min, n), o = this.WW.bQ(i.max, n);
            return T.cQ(e, o)
        }, RW: !1, hq: function (t) {
            var i = this.rW ? T.S.g(t.lng, this.rW, !0) : t.lng,
                n = this.wrapLat ? T.S.g(t.lat, this.wrapLat, !0) : t.lat, e = t.Fq;
            return T.fq(n, i, e)
        }
    }, T.gq.TW = T.extend({}, T.gq, {
        projection: T.bq.Mq, WW: new T.NQ(1, 0, -1, 0), scale: function (t) {
            return Math.pow(2, t)
        }, zoom: function (t) {
            return Math.log(t) / Math.LN2
        }, distance: function (t, i) {
            var n = i.lng - t.lng, e = i.lat - t.lat;
            return Math.sqrt(n * n + e * e)
        }, RW: !0
    }), T.gq.Gq = T.extend({}, T.gq, {
        rW: [-180, 180], R: 6371e3, distance: function (t, i) {
            var n = Math.PI / 180, e = t.lat * n, o = i.lat * n,
                s = Math.sin(e) * Math.sin(o) + Math.cos(e) * Math.cos(o) * Math.cos((i.lng - t.lng) * n);
            return this.R * Math.acos(Math.min(s, 1))
        }
    }), T.gq.tW = T.extend({}, T.gq.Gq, {
        code: "YW", projection: T.bq.mq, WW: function () {
            var t = .5 / (Math.PI * T.bq.mq.R);
            return new T.NQ(t, .5, -t, .5)
        }()
    }), T.gq.UW = T.extend({}, T.gq.tW, {code: "EPSG:900913"}), T.gq.uW = T.extend({}, T.gq.Gq, {
        code: "EPSG:4326",
        projection: T.bq.Mq,
        WW: new T.NQ(1 / 180, 1, -1 / 180, .5)
    }), T.Map = T.m.extend({
        options: {
            IW: T.gq.UW,
            center: void 0,
            zoom: void 0,
            minZoom: void 0,
            maxZoom: void 0,
            layers: [],
            maxBounds: void 0,
            iW: void 0,
            OW: !0,
            oW: !0,
            PW: !0,
            pW: 8388608,
            AW: 1,
            aW: 1,
            datasourcesControl: !1
        }, initialize: function (t, i) {
            i = T.setOptions(this, i), this.SW = "EPSG:900913", i.projection ? "EPSG:4326" == i.projection ? (i.IW = T.gq.uW, this.SW = "EPSG:4326", T.gq.EW = 1) : (i.IW = T.gq.UW, this.SW = "EPSG:900913", i.projection = this.SW, T.gq.EW = 0) : i.projection = this.SW, this.sW(t), this.DW(), this.dW = T.D(this.dW, this), this.FW(), i.maxBounds && this.setMaxBounds(i.maxBounds), void 0 !== i.zoom && (this.fW = this.GW(i.zoom)), i.center && void 0 !== i.zoom && this.gW(T.fq(i.center), i.zoom, {reset: !0}), this.HW = [], this.hW = {}, this.JW = [], this.jW = [], this.KW = {}, this.kW = !0, this.initLayers = [], this.B(), this.defaultMapType = null, this.LW(this), this.lW(this.options.layers)
        }, getCode: function () {
            return this.SW
        }, gW: function (t, i) {
            return i = void 0 === i ? this.getZoom() : i, this.ZW(T.fq(t), i), this
        }, setZoom: function (t, i) {
            return this.CW ? this.gW(this.getCenter(), t, {zoom: i}) : (this.fW = t, this)
        }, zoomIn: function (t, i) {
            return t = t || (T.oQ.any3d ? this.options.aW : 1), this.setZoom(this.fW + t, i)
        }, zoomOut: function (t, i) {
            return t = t || (T.oQ.any3d ? this.options.aW : 1), this.setZoom(this.fW - t, i)
        }, VW: function (t, i, n) {
            var e = this.cW(i), o = this.getSize().dQ(2), s = t instanceof T.Point ? t : this.BW(t),
                r = s.sQ(o).fQ(1 - 1 / e), h = this.vW(o.AQ(r));
            return this.gW(h, i, {zoom: n})
        }, NW: function (t, i) {
            i = i || {}, t = t.getBounds ? t.getBounds() : T.jq(t);
            var n = T.SQ(i.bW || i.MW || [0, 0]), e = T.SQ(i.paddingBottomRight || i.MW || [0, 0]),
                o = this.nW(t, !1, n.AQ(e));
            o = "number" == typeof i.maxZoom ? Math.min(i.maxZoom, o) : o;
            var s = e.sQ(n).dQ(2), r = this.nq(t.getSouthWest(), o), h = this.nq(t.getNorthEast(), o),
                a = this._q(r.AQ(h).dQ(2).AQ(s), o);
            return {center: a, zoom: o}
        }, _W: function (t, i) {
            if (t = T.jq(t), !t.vQ()) throw new Error("Bounds are not valid.");
            var n = this.NW(t, i);
            return this.gW(n.center, n.zoom, i)
        }, mW: function (t) {
            return this._W([[-90, -180], [90, 180]], t)
        }, getViewport: function (t) {
            if (T.S.l(t) && 0 != t.length) {
                var i = this.Qw(t);
                return {center: i.getCenter(), zoom: this.nW(i, !1)}
            }
        }, setViewport: function (t) {
            if (T.S.l(t) && 0 != t.length) {
                var i = this.Qw(t);
                this.panTo(i.getCenter(), this.nW(i, !1))
            }
        }, Qw: function (t) {
            for (var i = new T.LngLatBounds(new T.LngLat(0, 0)), n = 0, e = t.length; n < e; n++) {
                var o = T.fq(t[n]);
                i.extend(o)
            }
            return i
        }, panTo: function (t, i, n) {
            return i && (this.fW = i), this.centerAndZoom(t, this.fW, {qw: n})
        }, panBy: function (t) {
            return this.wQ("movestart"), this.Ww(T.SQ(t)), this.wQ("move"), this.wQ("moveend")
        }, setMaxBounds: function (t) {
            return t = T.jq(t), t.vQ() ? (this.options.maxBounds && this.off("moveend", this.ww), this.options.maxBounds = t, this.CW && this.ww(), this.on("moveend", this.ww)) : (this.options.maxBounds = null, this.off("moveend", this.ww))
        }, setMinZoom: function (t) {
            return this.options.minZoom = t, this.CW && this.getZoom() < this.options.minZoom ? this.setZoom(t) : (this.wQ("minzoom", {
                minZoom: this.options.minZoom,
                maxZoom: this.options.maxZoom
            }), this)
        }, setMaxZoom: function (t) {
            return this.options.maxZoom = t, this.CW && this.getZoom() > this.options.maxZoom ? this.setZoom(t) : (this.wQ("maxzoom", {
                minZoom: this.options.minZoom,
                maxZoom: this.options.maxZoom
            }), this)
        }, Ew: function (t, i) {
            this.ew = !0;
            var n = this.getCenter(), e = this.Rw(n, this.fW, T.jq(t));
            return n.equals(e) || this.panTo(e, i), this.ew = !1, this
        }, rw: function (t) {
            if (!this.CW) return this;
            t = T.extend({Tw: !1, qw: !0}, t === !0 ? {Tw: !0} : t);
            var i = this.getSize();
            this.kW = !0, this.tw = null;
            var n = this.getSize(), e = i.dQ(2).hQ(), o = n.dQ(2).hQ(), s = e.sQ(o);
            return s.x || s.y ? (t.Tw && t.qw ? this.panBy(s) : (t.qw && this.Ww(s), this.wQ("move"), t.Yw ? (clearTimeout(this.Uw), this.Uw = setTimeout(T.D(this.wQ, this, "moveend"), 200)) : this.wQ("moveend")), this.wQ("resize", {
                oldSize: i,
                newSize: n
            })) : this
        }, checkResize: function () {
            this.rw()
        }, uw: function () {
            return this.setZoom(this.GW(this.fW)), this.options.AW || this.wQ("viewreset"), this.Iw()
        }, iw: function (t, i) {
            if (!i) return this;
            var n = this[t] = new i(this);
            return this.HW.push(n), this.options[t] && n.enable(), this
        }, Qq: function () {
            this.FW(!0);
            try {
                delete this.Ow._tdt
            } catch (AO) {
                this.Ow._tdt = void 0
            }
            T._Q.Qq(this.ow), this.Pw && this.Pw(), this.pw(), this.CW && this.wQ("unload");
            for (var t in this.hW) this.hW[t].Qq();
            return this
        }, Aw: function (t, i) {
            var n = "tdt-pane" + (t ? " tdt-" + t.replace("Pane", "") + "-pane" : ""),
                e = T._Q.s("div", n, i || this.ow);
            return t && (this.aw[t] = e), e
        }, getCenter: function () {
            return this.Sw(), this.tw && !this.sw() ? this.tw : this.Dw(this.dw())
        }, getZoom: function () {
            return this.fW
        }, getBounds: function () {
            var t = this.Fw(), i = this._q(t.CQ()), n = this._q(t.VQ());
            return new T.Kq(i, n)
        }, getMinZoom: function () {
            return void 0 === this.options.minZoom ? this.fw || 0 : this.options.minZoom
        }, getMaxZoom: function () {
            return void 0 === this.options.maxZoom ? void 0 === this.Gw ? 1 / 0 : this.Gw : this.options.maxZoom
        }, nW: function (t, i, n) {
            t = T.jq(t), n = T.SQ(n || [0, 0]);
            var e = this.getZoom() || 0, o = this.getMinZoom(), s = this.getMaxZoom(), r = t.Zq(), h = t.cq(),
                a = this.getSize().sQ(n), u = this.nq(h, e).sQ(this.nq(r, e)), c = T.oQ.any3d ? this.options.AW : 1,
                l = Math.min(a.x / u.x, a.y / u.y);
            return e = this.gw(l, e), c && (e = Math.round(e / (c / 100)) * (c / 100), e = i ? Math.ceil(e / c) * c : Math.floor(e / c) * c), Math.max(o, Math.min(s, e))
        }, getSize: function () {
            return this.Hw && !this.kW || (this.Hw = new T.Point(this.Ow.clientWidth, this.Ow.clientHeight), this.kW = !1), this.Hw.pQ()
        }, Fw: function (t, i) {
            var n = this.hw(t, i);
            return new T.ZQ(n, n.AQ(this.getSize()))
        }, Jw: function () {
            return this.Sw(), this.jw
        }, Kw: function (t) {
            return this.options.IW.eW(void 0 === t ? this.getZoom() : t)
        }, getPane: function (t) {
            return "string" == typeof t ? this.aw[t] : t
        }, getPanes: function () {
            return this.aw
        }, getContainer: function () {
            return this.Ow
        }, cW: function (t, i) {
            var n = this.options.IW;
            return i = void 0 === i ? this.fW : i, n.scale(t) / n.scale(i)
        }, gw: function (t, i) {
            var n = this.options.IW;
            return i = void 0 === i ? this.fW : i, n.zoom(t * n.scale(i + T.gq.EW))
        }, setCrs: function (t) {
            if (t == this.getCode()) return !1;
            var i = this.getCenter();
            "EPSG:900913" == t ? (this.options.IW = T.gq.UW, this.SW = t, T.gq.EW = 0) : (this.options.IW = T.gq.uW, this.SW = t, T.gq.EW = 1), this.setMapType(this.getMapType()), this.ZW(i, this.getZoom())
        }, switchingMaps: function (t) {
            this.setCrs(t)
        }, nq: function (t, i) {
            return i = void 0 === i ? this.fW : i, this.options.IW.qW(T.fq(t), i)
        }, _q: function (t, i) {
            return i = void 0 === i ? this.fW : i, this.options.IW.wW(T.SQ(t), i)
        }, Dw: function (t) {
            var i = T.SQ(t).AQ(this.Jw());
            return this._q(i)
        }, kw: function (t) {
            var i = this.nq(T.fq(t)).JQ();
            return i.DQ(this.Jw())
        }, layerPointToLngLat: function (t) {
            return this.Dw(t)
        }, lngLatToLayerPoint: function (t) {
            return this.kw(t)
        }, hq: function (t) {
            return this.options.IW.hq(T.fq(t))
        }, distance: function (t, i) {
            return this.options.IW.distance(T.fq(t), T.fq(i))
        }, getDistance: function (t, i) {
            return this.distance(t, i)
        }, Lw: function (t) {
            return T.SQ(t).sQ(this.lw())
        }, Zw: function (t) {
            return T.SQ(t).AQ(this.lw())
        }, vW: function (t) {
            var i = this.Lw(T.SQ(t));
            return this.Dw(i)
        }, BW: function (t) {
            return this.Zw(this.kw(T.fq(t)))
        }, containerPointToLngLat: function (t) {
            return this.vW(t)
        }, lngLatToContainerPoint: function (t) {
            return this.BW(t)
        }, Cw: function (t) {
            return T.oq.Vw(t, this.Ow)
        }, cw: function (t) {
            return this.Lw(this.Cw(t))
        }, Bw: function (t) {
            return this.Dw(this.cw(t))
        }, sW: function (t) {
            var i = this.Ow = T._Q.mQ(t);
            i && i._tdt, T.oq.addListener(i, "scroll", this.vw, this), i._tdt = !0
        }, DW: function () {
            var t = this.Ow;
            this.Nw = this.options.OW && T.oQ.any3d, T._Q.Rq(t, "tdt-container" + (T.oQ.touch ? " tdt-touch" : "") + (T.oQ.retina ? " tdt-retina" : "") + (T.oQ.ielt9 ? " tdt-oldie" : "") + (T.oQ.safari ? " tdt-safari" : "") + (this.Nw ? " tdt-fade-anim" : ""));
            var i = T._Q.getStyle(t, "position");
            "absolute" !== i && "relative" !== i && "fixed" !== i && (t.style.position = "relative"), this.bw(), this.Mw && this.Mw()
        }, bw: function () {
            var t = this.aw = {};
            this.nw = {}, this.ow = this.Aw("mapPane", this.Ow), T._Q.setPosition(this.ow, new T.Point(0, 0)), this.Aw("tilePane"), this.Aw("_w"), this.Aw("overlayPane"), this.Aw("markerPane"), this.Aw("infoWindowPane"), this.options.PW || (T._Q.Rq(t.markerPane, "tdt-zoom-hide"), T._Q.Rq(t._w, "tdt-zoom-hide"))
        }, ZW: function (t, i) {
            T._Q.setPosition(this.ow, new T.Point(0, 0));
            var n = !this.CW;
            this.CW = !0, i = this.GW(i), this.wQ("viewprereset");
            var e = this.fW !== i;
            this.qE(e).QE(t, i).mw(e), this.wQ("viewreset"), n && this.wQ("load")
        }, qE: function (t) {
            return t && this.wQ("zoomstart"), this.wQ("movestart")
        }, QE: function (t, i, n) {
            void 0 === i && (i = this.fW);
            var e = this.fW !== i;
            return this.fW = i, this.tw = t, this.jw = this.WE(t), (e || n && n.pinch) && this.wQ("zoom", n), this.wQ("move", n)
        }, mw: function (t) {
            return t && this.wQ("zoomend"), this.wQ("moveend")
        }, Iw: function () {
            return T.S.V(this.wE), this.EE && this.EE.uw(), this
        }, Ww: function (t) {
            T._Q.setPosition(this.ow, this.lw().sQ(t))
        }, eE: function () {
            return this.getMaxZoom() - this.getMinZoom()
        }, ww: function () {
            this.ew || this.Ew(this.options.maxBounds)
        }, Sw: function () {
            !this.CW
        }, FW: function (t) {
            if (T.oq) {
                this.RE = {}, this.RE[T.d(this.Ow)] = this;
                var i = t ? "off" : "on";
                T.oq[i](this.Ow, "click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress", this.rE, this), this.options.oW && T.oq[i](window, "resize", this.dW, this), T.oQ.any3d && this.options.pW && this[i]("moveend", this.TE)
            }
        }, dW: function () {
            T.S.V(this.tE), this.tE = T.S.C(function () {
                this.rw({Yw: !0})
            }, this)
        }, vw: function () {
            this.Ow.scrollTop = 0, this.Ow.scrollLeft = 0
        }, TE: function () {
            var t = this.lw();
            Math.max(Math.abs(t.x), Math.abs(t.y)) >= this.options.pW && this.ZW(this.getCenter(), this.getZoom())
        }, YE: function (t, i) {
            for (var n, e = [], o = "mouseout" === i || "mouseover" === i, s = t.target || t.srcElement, r = !1; s;) {
                if (n = this.RE[T.d(s)], n && ("click" === i || "UE" === i) && !t.uE && this.IE(n)) {
                    r = !0;
                    break
                }
                if (n && n.EQ(i, !0)) {
                    if (o && !T.oq.iE(s, t)) break;
                    if (e.push(n), o) break
                }
                if (s === this.Ow) break;
                s = s.parentNode
            }
            return e.length || r || o || !T.oq.iE(s, t) || (e = [this]), e
        }, rE: function (t) {
            if (this.CW && !T.oq.OE(t)) {
                var i = "keypress" === t.type && 13 === t.keyCode ? "click" : t.type;
                "mousedown" === i && T._Q.Sq(t.target || t.srcElement), this.oE(t, i)
            }
        }, oE: function (t, i, n) {
            if ("click" === t.type) {
                var e = T.S.extend({}, t);
                e.type = "UE", this.oE(e, e.type, n)
            }
            if (!t._stopped && (n = (n || []).concat(this.YE(t, i)), n.length)) {
                var o = n[0];
                "contextmenu" === i && o.EQ(i, !0) && T.oq.preventDefault(t);
                var s = {originalEvent: t};
                if ("keypress" !== t.type) {
                    var r = o instanceof T.Marker;
                    s.containerPoint = r ? this.BW(o.PE()) : this.Cw(t), s.layerPoint = this.Lw(s.containerPoint), s.lnglat = r ? o.PE() : this.Dw(s.layerPoint)
                }
                for (var h = 0; h < n.length; h++) if (n[h].wQ(i, s, !0), s.originalEvent._stopped || n[h].options.pE && T.S.indexOf(n[h].options.pE, i) !== -1) return
            }
        }, IE: function (t) {
            return t = t.AE && t.AE.aE() ? t : this, t.AE && t.AE.moved() || this.SE && this.SE.moved()
        }, pw: function () {
            for (var t = 0, i = this.HW.length; t < i; t++) this.HW[t].disable()
        }, sE: function (t, i) {
            return this.CW ? t.call(i || this, {target: this}) : this.on("load", t, i), this
        }, lw: function () {
            return T._Q.getPosition(this.ow) || new T.Point(0, 0)
        }, sw: function () {
            var t = this.lw();
            return t && !t.equals([0, 0])
        }, hw: function (t, i) {
            var n = t && void 0 !== i ? this.WE(t, i) : this.Jw();
            return n.sQ(this.lw())
        }, WE: function (t, i) {
            var n = this.getSize().FQ(2);
            return this.nq(t, i).DQ(n).aQ(this.lw()).JQ()
        }, DE: function (t, i, n) {
            var e = this.WE(n, i);
            return this.nq(t, i).DQ(e)
        }, dw: function () {
            return this.Lw(this.getSize().FQ(2))
        }, dE: function (t) {
            return this.kw(t).sQ(this.dw())
        }, Rw: function (t, i, n) {
            if (!n) return t;
            var e = this.nq(t, i), o = this.getSize().dQ(2), s = new T.ZQ(e.sQ(o), e.AQ(o)), r = this.FE(s, n, i);
            return r.hQ().equals([0, 0]) ? t : this._q(e.AQ(r), i)
        }, fE: function (t, i) {
            if (!i) return t;
            var n = this.Fw(), e = new T.ZQ(n.min.AQ(t), n.max.AQ(t));
            return t.AQ(this.FE(e, i))
        }, FE: function (t, i, n) {
            var e = T.cQ(this.nq(i.getNorthEast(), n), this.nq(i.getSouthWest(), n)), o = e.min.sQ(t.min),
                s = e.max.sQ(t.max), r = this.GE(o.x, -s.x), h = this.GE(o.y, -s.y);
            return new T.Point(r, h)
        }, GE: function (t, i) {
            return t + i > 0 ? Math.round(t - i) / 2 : Math.max(0, Math.ceil(t)) - Math.max(0, Math.floor(i))
        }, GW: function (t) {
            var i = this.getMinZoom(), n = this.getMaxZoom(), e = T.oQ.any3d ? this.options.AW : 1;
            return e && (t = Math.round(t / e) * e), Math.max(i, Math.min(n, t))
        }, enableAutoResize: function () {
            this.options.oW = !0, T.oq.on(window, "resize", this.dW, this)
        }, disableAutoResize: function () {
            this.options.oW = !1, T.oq.off(window, "resize", this.dW, this)
        }, getOverlays: function () {
            var t = [];
            for (var i in this.hW) "undefined" != typeof this.hW[i].options.type && t.push(this.hW[i]);
            return t
        }, setStyle: function (t) {
            t = t || "black", "black" == t ? this.Ow.style.backgroundColor = "#000000" : this.Ow.style.backgroundColor = "#466399", this.defaultMapType.getLayers()[0].on("tileload", function (t) {
                T._Q.Rq(t.tile, "tdtTileImage")
            }), this.defaultMapType.getLayers()[1].on("tileload", function (t) {
                T._Q.Rq(t.tile, "tdtTileImage")
            }), this.ZW(this.getCenter(), this.getZoom())
        }, removeStyle: function () {
            this.Ow.style.backgroundColor = "", this.defaultMapType.getLayers()[0].off("tileload"), this.defaultMapType.getLayers()[1].off("tileload"), this.ZW(this.getCenter(), this.getZoom())
        }
    }), T.gE = function (t, i) {
        return new T.Map(t, i)
    }, T.HE = T.m.extend({
        options: {hE: "overlayPane", pE: []}, addTo: function (t) {
            return t.addLayer(this), this
        }, Qq: function () {
            return this.JE(this.jE || this.KE)
        }, JE: function (t) {
            return t && t.removeLayer(this), this
        }, getPane: function (t) {
            return this.jE.getPane(t ? this.options[t] || t : this.options.hE)
        }, kE: function (t) {
            return this.jE.RE[T.d(t)] = this, this
        }, LE: function (t) {
            return delete this.jE.RE[T.d(t)], this
        }, lE: function (t) {
            var i = t.target;
            if (i.hasLayer(this)) {
                if (this.jE = i, this.ZE = i.ZE, this.CE) {
                    var n = this.CE();
                    i.on(n, this), this.rQ("remove", function () {
                        i.off(n, this)
                    }, this)
                }
                this.onAdd(i), this.VE && this.jE.cE && this.jE.cE.BE(this.VE()), this.wQ("AQ"), i.wQ("layeradd", {layer: this})
            }
        }
    }), T.Map.M({
        addLayer: function (t) {
            var i = T.d(t);
            return this.hW[i] ? this : (this.hW[i] = t, "undefined" != typeof this.hW[i].options.type && this.JW.push(this.hW[i]), t.KE = this, t.vE && t.vE(this), this.sE(t.lE, t), this)
        }, removeLayer: function (t) {
            var i = T.d(t);
            return this.hW[i] ? (this.CW && t.onRemove(this), t.VE && this.cE && this.cE.NE(t.VE()), delete this.hW[i], this.CW && (this.wQ("layerremove", {layer: t}), t.wQ("remove")), t.jE = t.KE = null, this) : this
        }, getLayers: function () {
            var t = [];
            for (layer in this.hW) "function" == typeof this.hW[layer].getTileUrl && "tilePane" == this.hW[layer].options.hE && t.push(this.hW[layer]);
            return t
        }, clearLayers: function () {
            for (var t = 0; t < this.jW.length; t++) this.removeOverLay(this.jW[t]);
            for (var t = this.jW.length - 1; t >= 0; t--) this.jW.splice(t, 1);
            return this
        }, addOverLay: function (t) {
            this.addLayer(t), this.wQ("addoverlay", {addoverlay: t})
        }, removeOverLay: function (t) {
            this.removeLayer(t), this.wQ("removeoverlay", {removeoverlay: t})
        }, clearOverLays: function () {
            for (var t = 0; t < this.JW.length; t++) this.removeOverLay(this.JW[t]);
            return this.wQ("clearoverlays"), this
        }, setMapType: function (t) {
            t && (this.defaultMapType && this.clearMapType(this.defaultMapType), this.addLayer(t), this.defaultMapType = t), this.wQ("maptypechange", {mapType: t})
        }, clearMapType: function (t) {
            t && (this.removeLayer(t), this.defaultMapType = null)
        }, addMapType: function (t) {
        }, removeMapType: function (t) {
        }, getMapType: function () {
            return this.defaultMapType
        }, hasLayer: function (t) {
            return !!t && T.d(t) in this.hW
        }, bE: function (t, i) {
            for (var n in this.hW) t.call(i, this.hW[n]);
            return this
        }, lW: function (t) {
            if (t = t ? T.S.l(t) ? t : [t] : [], 0 == t.length) this.defaultMapType = TMAP_NORMAL_MAP, t = [TMAP_NORMAL_MAP]; else for (var i = 0, n = t.length; i < n; i++) if (t[i] instanceof T.MapType) {
                this.defaultMapType = t[i];
                break
            }
            for (var i = 0, n = t.length; i < n; i++) this.addLayer(t[i])
        }, ME: function (t) {
            !isNaN(t.options.maxZoom) && isNaN(t.options.minZoom) || (this.KW[T.d(t)] = t, this.nE())
        }, _E: function (t) {
            var i = T.d(t);
            this.KW[i] && (delete this.KW[i], this.nE())
        }, nE: function () {
            var t = 1 / 0, i = -(1 / 0), n = this.eE();
            for (var e in this.KW) {
                var o = this.KW[e].options;
                t = void 0 === o.minZoom ? t : Math.min(t, o.minZoom), i = void 0 === o.maxZoom ? i : Math.max(i, o.maxZoom)
            }
            this.Gw = i === -(1 / 0) ? void 0 : i, this.fw = t === 1 / 0 ? void 0 : t, n !== this.eE() && this.wQ("zoomlevelschange")
        }
    }), T.Overlay = T.HE.extend({
        options: {type: 0}, show: function () {
            this.getElement().style.display = "block"
        }, hide: function () {
            this.getElement().style.display = "none"
        }, isHidden: function () {
            return "none" == this.getElement().style.display
        }, CE: function () {
            var t = {zoom: this.update, viewreset: this.update};
            return t
        }, update: function () {
        }, getPane: function (t) {
            return this.jE.getPane(t ? this.options[t] || t : this.options.hE)
        }, setOptions: function (t) {
            T.S.extend(this.options, t)
        }
    }), T.ScriptLoader = function () {
    }, T.ScriptLoader.prototype = {
        load: function (t, i, n, e) {
            if (this.objName = "tdt_loadResult", this.win = window, this.charset = i ? i : "utf-8", this.src = t ? t : null, null != this.src) {
                this.callback = e ? T.ScriptLoader.mE(n, e) : null;
                var o = this.win;
                o[this.objName] = null, this.oScript = document.createElement("script"), this.oScript.type = "text/javascript", this.oScript.async = !0, this.oScript.charset = this.charset, this.oScript.src = this.src, this.running = !0;
                var n = this;
                this.oScript.onload = this.oScript.onreadystatechange = function () {
                    this.readyState && "loaded" != this.readyState && "complete" !== this.readyState || (n.oScript.onload = n.oScript.onreadystatechange = null, n.Qe())
                }, o.document.body.insertBefore(this.oScript, o.document.body.firstChild)
            }
        }, Qe: function (t) {
            var i = this.win;
            if (i[this.objName]) {
                var n = i[this.objName];
                i[this.objName] = null, this.callback && this.callback(n)
            } else this.callback && this.callback("");
            !document.all && this.oScript && this.oScript.parentNode == i.document.body && (this.oScript.removeAttribute("src"), i.document.body.removeChild(this.oScript), delete this.oScript), this.running = !1
        }
    }, T.ScriptLoader.getObject = function () {
        var t, i = i ? i : window;
        i.scriptLoader_obj || (i.scriptLoader_obj = []);
        for (var n = 0; n < i.scriptLoader_obj.length; n++) if (0 == i.scriptLoader_obj[n].running) {
            t = i.scriptLoader_obj[n], delete t;
            break
        }
        return t ? (t.running = !0, t) : t = new T.ScriptLoader
    }, T.ScriptLoader.qe = function (t) {
        return t && t.ownerDocument && t.ownerDocument.parentWindow ? t.ownerDocument.parentWindow : window
    }, T.ScriptLoader.We = function (t) {
        return t || (t = []), t[0] || (t[0] = T.ScriptLoader.qe().event), t[0] && !t[0].target && t[0].srcElement && (t[0].target = t[0].srcElement), t
    }, T.ScriptLoader.mE = function (t, i) {
        return function () {
            i.apply(t, T.ScriptLoader.We(arguments))
        }
    }, T.bq.we = {
        R: 6378137,
        Ee: 6356752.314245179,
        bounds: T.cQ([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),
        nq: function (t) {
            var i = Math.PI / 180, n = this.R, e = t.lat * i, o = this.Ee / n, s = Math.sqrt(1 - o * o),
                r = s * Math.sin(e), h = Math.tan(Math.PI / 4 - e / 2) / Math.pow((1 - r) / (1 + r), s / 2);
            return e = -n * Math.log(Math.max(h, 1e-10)), new T.Point(t.lng * i * n, e)
        },
        _q: function (t) {
            for (var i, n = 180 / Math.PI, e = this.R, o = this.Ee / e, s = Math.sqrt(1 - o * o), r = Math.exp(-t.y / e), h = Math.PI / 2 - 2 * Math.atan(r), a = 0, u = .1; a < 15 && Math.abs(u) > 1e-7; a++) i = s * Math.sin(h), i = Math.pow((1 - i) / (1 + i), s / 2), u = Math.PI / 2 - 2 * Math.atan(r * i) - h, h += u;
            return new T.dq(h * n, t.x * n / e)
        }
    }, T.gq.ee = T.extend({}, T.gq.Gq, {
        code: "Re", projection: T.bq.we, WW: function () {
            var t = .5 / (Math.PI * T.bq.we.R);
            return new T.NQ(t, .5, -t, .5)
        }()
    }), T.re = T.HE.extend({
        options: {
            hE: "tilePane",
            Te: 256,
            opacity: 1,
            zIndex: 1,
            te: T.oQ.mobile,
            updateWhenZooming: !0,
            Ye: 200,
            Ue: null,
            bounds: null,
            minZoom: 0,
            maxZoom: void 0,
            ue: !1,
            className: "",
            keepBuffer: 2
        }, initialize: function (t) {
            t = T.setOptions(this, t)
        }, onAdd: function () {
            this.sW(), this.Ie = {}, this.ie = {}, this.ZW(), this.Oe()
        }, vE: function (t) {
            t.ME(this)
        }, onRemove: function (t) {
            this.oe(), T._Q.Qq(this.Ow), t._E(this), this.Ow = null, this.Pe = null
        }, pe: function () {
            return this.jE && (T._Q.Wq(this.Ow), this.Ae(Math.max)), this
        }, ae: function () {
            return this.jE && (T._Q.wq(this.Ow), this.Ae(Math.min)), this
        }, VE: function () {
            return this.options.Ue
        }, getContainer: function () {
            return this.Ow
        }, setOpacity: function (t) {
            return this.options.opacity = t, this.Se(), this
        }, setZIndex: function (t) {
            return this.options.zIndex = t, this.se(), this
        }, De: function () {
            return this.de
        }, redraw: function () {
            return this.jE && (this.oe(), this.Oe()), this
        }, refresh: function () {
            this.redraw()
        }, CE: function () {
            var t = {viewprereset: this.Fe, viewreset: this.ZW, zoom: this.ZW, moveend: this.TE};
            return this.options.te || (this.fe || (this.fe = T.S.G(this.TE, this.options.Ye, this)), t.move = this.fe), this.ZE && (t.Ge = this.ge), t
        }, He: function () {
            return document.createElement("div")
        }, he: function () {
            var t = this.options.Te;
            return t instanceof T.Point ? t : new T.Point(t, t)
        }, se: function () {
            this.Ow && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this.Ow.style.zIndex = this.options.zIndex)
        }, Ae: function (t) {
            for (var i, n = this.getPane().children, e = -t(-(1 / 0), 1 / 0), o = 0, s = n.length; o < s; o++) i = n[o].style.zIndex, n[o] !== this.Ow && i && (e = t(e, +i));
            isFinite(e) && (this.options.zIndex = e + t(-1, 1), this.se())
        }, Se: function () {
            if (this.jE && !T.oQ.ielt9) {
                T._Q.setOpacity(this.Ow, this.options.opacity);
                var t = +new Date, i = !1, n = !1;
                for (var e in this.ie) {
                    var o = this.ie[e];
                    if (o.Je && o.loaded) {
                        var s = Math.min(1, (t - o.loaded) / 200);
                        T._Q.setOpacity(o.el, s), s < 1 ? i = !0 : (o.active && (n = !0), o.active = !0)
                    }
                }
                n && !this.je && this.Ke(), i && (T.S.V(this.ke), this.ke = T.S.C(this.Se, this))
            }
        }, sW: function () {
            this.Ow || (this.Ow = T._Q.s("div", "tdt-layer " + (this.options.className || "")), this.se(), this.options.opacity < 1 && this.Se(), this.getPane().appendChild(this.Ow))
        }, Le: function () {
            var t = this.Pe, i = this.options.maxZoom;
            if (void 0 !== t) {
                for (var n in this.Ie) this.Ie[n].el.children.length || n === t ? this.Ie[n].el.style.zIndex = i - Math.abs(t - n) : (T._Q.Qq(this.Ie[n].el), this.le(n), delete this.Ie[n]);
                var e = this.Ie[t], o = this.jE;
                return e || (e = this.Ie[t] = {}, e.el = T._Q.s("div", "tdt-tile-container tdt-zoom-animated", this.Ow), e.el.style.zIndex = i, e.origin = o.nq(o._q(o.Jw()), t).hQ(), e.zoom = t, this.Ze(e, o.getCenter(), o.getZoom()), T.S.H(e.el.offsetWidth)), this.Ce = e, e
            }
        }, Ke: function () {
            if (this.jE) {
                var t, i, n = this.jE.getZoom();
                if (n > this.options.maxZoom || n < this.options.minZoom) return void this.oe();
                for (t in this.ie) i = this.ie[t], i.retain = i.Je;
                for (t in this.ie) if (i = this.ie[t], i.Je && !i.active) {
                    var e = i.coords;
                    this.Ve(e.x, e.y, e.z, e.z - 5) || this.ce(e.x, e.y, e.z, e.z + 2)
                }
                for (t in this.ie) this.ie[t].retain || this.Be(t)
            }
        }, le: function (t) {
            for (var i in this.ie) this.ie[i].coords.z === t && this.Be(i)
        }, oe: function () {
            for (var t in this.ie) this.Be(t)
        }, Fe: function () {
            for (var t in this.Ie) T._Q.Qq(this.Ie[t].el), delete this.Ie[t];
            this.oe(), this.Pe = null
        }, Ve: function (t, i, n, e) {
            var o = Math.floor(t / 2), s = Math.floor(i / 2), r = n - 1, h = new T.Point(+o, +s);
            h.z = +r;
            var a = this.ve(h), u = this.ie[a];
            return u && u.active ? (u.retain = !0, !0) : (u && u.loaded && (u.retain = !0), r > e && this.Ve(o, s, r, e))
        }, ce: function (t, i, n, e) {
            for (var o = 2 * t; o < 2 * t + 2; o++) for (var s = 2 * i; s < 2 * i + 2; s++) {
                var r = new T.Point(o, s);
                r.z = n + 1;
                var h = this.ve(r), a = this.ie[h];
                a && a.active ? a.retain = !0 : (a && a.loaded && (a.retain = !0), n + 1 < e && this.ce(o, s, n + 1, e))
            }
        }, ZW: function (t) {
            var i = t && (t.pinch || t.Ne);
            this.be(this.jE.getCenter(), this.jE.getZoom(), i, i)
        }, ge: function (t) {
            this.be(t.center, t.zoom, !0, t.noUpdate)
        }, be: function (t, i, n, e) {
            var o = Math.round(i);
            (void 0 !== this.options.maxZoom && o > this.options.maxZoom || void 0 !== this.options.minZoom && o < this.options.minZoom) && (o = void 0);
            var s = this.options.updateWhenZooming && o !== this.Pe;
            e && !s || (this.Pe = o, this.Me && this.Me(), this.Le(), this.ne(), void 0 !== o && this.Oe(t), n || this.Ke(), this.je = !!n), this._e(t, i)
        }, _e: function (t, i) {
            for (var n in this.Ie) this.Ze(this.Ie[n], t, i)
        }, Ze: function (t, i, n) {
            var e = this.jE.cW(n, t.zoom), o = t.origin.fQ(e).sQ(this.jE.WE(i, n)).hQ();
            T.oQ.any3d ? T._Q.Uq(t.el, o, e) : T._Q.setPosition(t.el, o)
        }, ne: function () {
            var t = this.jE, i = t.options.IW, n = this.me = this.he(), e = this.Pe, o = this.jE.Kw(this.Pe);
            o && (this.QR = this.qR(o)), this.WR = i.rW && !this.options.ue && [Math.floor(t.nq([0, i.rW[0]], e).x / n.x), Math.ceil(t.nq([0, i.rW[1]], e).x / n.y)], this.wR = i.wrapLat && !this.options.ue && [Math.floor(t.nq([i.wrapLat[0], 0], e).y / n.x), Math.ceil(t.nq([i.wrapLat[1], 0], e).y / n.y)]
        }, TE: function () {
            this.jE && !this.jE.ER && this.Oe()
        }, eR: function (t) {
            var i = this.jE, n = i.ER ? Math.max(i.RR, i.getZoom()) : i.getZoom(), e = i.cW(n, this.Pe),
                o = i.nq(t, this.Pe).jQ(), s = i.getSize().dQ(2 * e);
            return new T.ZQ(o.sQ(s), o.AQ(s))
        }, Oe: function (t) {
            var i = this.jE;
            if (i) {
                var n = i.getZoom();
                if (void 0 === t && (t = i.getCenter()), void 0 !== this.Pe) {
                    var e = this.eR(t), o = this.qR(e), s = o.getCenter(), r = [], h = this.options.keepBuffer,
                        a = new T.ZQ(o.CQ().sQ([h, -h]), o.VQ().AQ([h, -h]));
                    for (var u in this.ie) {
                        var c = this.ie[u].coords;
                        c.z === this.Pe && a.contains(T.SQ(c.x, c.y)) || (this.ie[u].Je = !1)
                    }
                    if (Math.abs(n - this.Pe) > 1) return void this.be(t, n);
                    for (var l = o.min.y; l <= o.max.y; l++) for (var f = o.min.x; f <= o.max.x; f++) {
                        var d = new T.Point(f, l);
                        if (d.z = this.Pe, this.rR(d)) {
                            var p = this.ie[this.ve(d)];
                            p ? p.Je = !0 : r.push(d)
                        }
                    }
                    if (r.sort(function (t, i) {
                        return t.distanceTo(s) - i.distanceTo(s)
                    }), 0 !== r.length) {
                        this.de || (this.de = !0, this.wQ("loading"));
                        var m = document.createDocumentFragment();
                        for (f = 0; f < r.length; f++) this.TR(r[f], m);
                        this.Ce.el.appendChild(m)
                    }
                }
            }
        }, rR: function (t) {
            var i = this.jE.options.IW;
            if (!i.RW) {
                var n = this.QR;
                if (!i.rW && (t.x < n.min.x || t.x > n.max.x) || !i.wrapLat && (t.y < n.min.y || t.y > n.max.y)) return !1
            }
            if (!this.options.bounds) return !0;
            var e = this.tR(t);
            return T.jq(this.options.bounds).BQ(e)
        }, YR: function (t) {
            return this.tR(this.UR(t))
        }, tR: function (t) {
            var i = this.jE, n = this.he(), e = t.gQ(n), o = e.AQ(n), s = i.hq(i._q(e, t.z)), r = i.hq(i._q(o, t.z));
            return new T.Kq(s, r)
        }, ve: function (t) {
            return t.x + ":" + t.y + ":" + t.z
        }, UR: function (t) {
            var i = t.split(":"), n = new T.Point(+i[0], +i[1]);
            return n.z = +i[2], n
        }, Be: function (t) {
            var i = this.ie[t];
            i && (T._Q.Qq(i.el), delete this.ie[t], this.wQ("tileunload", {tile: i.el, coords: this.UR(t)}))
        }, uR: function (t) {
            T._Q.Rq(t, "tdt-tile");
            var i = this.he();
            t.style.width = i.x + "px", t.style.height = i.y + "px", t.onselectstart = T.S.H, t.onmousemove = T.S.H, T.oQ.ielt9 && this.options.opacity < 1 && T._Q.setOpacity(t, this.options.opacity), T.oQ.android && !T.oQ.android23 && (t.style.WebkitBackfaceVisibility = "hidden")
        }, TR: function (t, i) {
            var n = this.IR(t), e = this.ve(t), o = this.He(this.iR(t), T.D(this.OR, this, t));
            this.uR(o), this.He.length < 2 && T.S.C(T.D(this.OR, this, t, null, o)), T._Q.setPosition(o, n), this.ie[e] = {
                el: o,
                coords: t,
                Je: !0
            }, i.appendChild(o), this.wQ("tileloadstart", {tile: o, coords: t})
        }, OR: function (t, i, n) {
            if (this.jE) {
                i && this.wQ("tileerror", {error: i, tile: n, coords: t});
                var e = this.ve(t);
                n = this.ie[e], n && (n.loaded = +new Date, this.jE.Nw ? (T._Q.setOpacity(n.el, 0), T.S.V(this.ke), this.ke = T.S.C(this.Se, this)) : (n.active = !0, this.Ke()), T._Q.Rq(n.el, "tdt-tile-loaded"), this.wQ("tileload", {
                    tile: n.el,
                    coords: t
                }), this.oR() && (this.de = !1, this.wQ("load"), T.oQ.ielt9 || !this.jE.Nw ? T.S.C(this.Ke, this) : setTimeout(T.D(this.Ke, this), 250)))
            }
        }, IR: function (t) {
            return t.gQ(this.he()).sQ(this.Ce.origin)
        }, iR: function (t) {
            var i = new T.Point(this.WR ? T.S.g(t.x, this.WR) : t.x, this.wR ? T.S.g(t.y, this.wR) : t.y);
            return i.z = t.z, i
        }, qR: function (t) {
            var i = this.he();
            return new T.ZQ(t.min.HQ(i).jQ(), t.max.HQ(i).kQ().sQ([1, 1]))
        }, oR: function () {
            for (var t in this.ie) if (!this.ie[t].loaded) return !1;
            return !0
        }
    }), T.PR = function (t) {
        return new T.re(t)
    }, T.TileLayer = T.re.extend({
        options: {
            minZoom: 0,
            maxZoom: 18,
            pR: "abc",
            errorTileUrl: "",
            AR: 0,
            aR: null,
            SR: !1,
            sR: !1,
            DR: !1,
            dR: !1
        }, initialize: function (t, i) {
            this.FR = "", t && (this.FR = t), i = T.setOptions(this, i), i.DR && T.oQ.retina && i.maxZoom > 0 && (i.Te = Math.floor(i.Te / 2), i.sR ? (i.AR--, i.minZoom++) : (i.AR++, i.maxZoom--), i.minZoom = Math.max(0, i.minZoom)), "string" == typeof i.pR && (i.pR = i.pR.split("")), T.oQ.android || this.on("tileunload", this.fR)
        }, setUrl: function (t, i) {
            return this.FR = t, i || this.redraw(), this
        }, He: function (t, i) {
            var n = document.createElement("img");
            return T.oq.on(n, "load", T.D(this.GR, this, i, n)), T.oq.on(n, "error", T.D(this.gR, this, i, n)), this.options.dR && (n.dR = ""), n.Fq = "", n.src = this.getTileUrl(t), n
        }, getTileUrl: function (t) {
            var i = {r: T.oQ.retina ? "@2x" : "", s: this.HR(t), x: t.x, y: t.y, z: this.hR()};
            if (this.jE && !this.jE.options.IW.RW) {
                var n = this.QR.max.y - t.y;
                this.options.SR && (i.y = n), i["-y"] = n
            }
            return this._url_temp = this.FR, T.S.k(this._url_temp, T.extend(i, this.options))
        }, GR: function (t, i) {
            T.oQ.ielt9 ? setTimeout(T.D(t, this, null, i), 0) : t(null, i)
        }, gR: function (t, i, n) {
            var e = this.options.errorTileUrl;
            e && (i.src = e), t(n, i)
        }, he: function () {
            var t = this.jE, i = T.re.prototype.he.call(this), n = this.Pe + this.options.AR, e = this.options.aR;
            return null !== e && n > e ? i.dQ(t.cW(e, n)).hQ() : i
        }, fR: function (t) {
            t.tile.onload = null
        }, hR: function () {
            var t = this.options, i = this.Pe;
            return t.sR && (i = t.maxZoom - i), i += t.AR, null !== t.aR ? Math.min(i, t.aR) : i
        }, HR: function (t) {
            var i = Math.abs(t.x + t.y) % this.options.pR.length;
            return this.options.pR[i]
        }, Me: function () {
            var t, i;
            for (t in this.ie) this.ie[t].coords.z !== this.Pe && (i = this.ie[t].el, i.onload = T.S.H, i.onerror = T.S.H, i.complete || (i.src = T.S.Z, T._Q.Qq(i)))
        }
    }), T.JR = function (t, i) {
        return new T.TileLayer(t, i)
    }, T.TileLayer.WMS = T.TileLayer.extend({
        defaultWmsParams: {
            service: "WMS",
            request: "GetMap",
            version: "1.1.1",
            layers: "",
            styles: "",
            format: "image/jpeg",
            transparent: !1
        }, options: {IW: null, srs: null, jR: !1}, initialize: function (t, i) {
            this.FR = t;
            var n = T.extend({}, this.defaultWmsParams);
            for (var e in i) e in this.options || (n[e] = i[e]);
            i = T.setOptions(this, i), this.wmsSrs = "EPSG:900913", i.srs ? "EPSG:4326" == i.srs ? (i.IW = T.gq.uW, this.wmsSrs = "EPSG:4326") : (i.IW = T.gq.UW, i.srs = "EPSG:900913", this.wmsSrs = "EPSG:900913") : i.srs = this.wmsSrs, n.width = n.height = i.Te * (i.DR && T.oQ.retina ? 2 : 1), this.KR = n
        }, onAdd: function (t) {
            this.kR = this.options.IW || t.options.IW, this.LR = parseFloat(this.KR.version);
            var i = this.LR >= 1.3 ? "IW" : "srs";
            this.KR[i] = this.kR.code, T.TileLayer.prototype.onAdd.call(this, t)
        }, getTileUrl: function (t) {
            var i = this.tR(t), n = this.kR.nq(i.Zq()), e = this.kR.nq(i.cq()),
                o = (this.LR >= 1.3 && this.kR === T.gq.uW ? [e.y, n.x, n.y, e.x] : [n.x, e.y, e.x, n.y]).join(","),
                s = T.TileLayer.prototype.getTileUrl.call(this, t);
            return s + T.S.K(this.KR, s, this.options.jR) + (this.options.jR ? "&BBOX=" : "&bbox=") + o
        }, setParams: function (t, i) {
            return T.extend(this.KR, t), i || this.redraw(), this
        }
    }), T.JR.wms = function (t, i) {
        return new T.TileLayer.WMS(t, i)
    }, T.TileLayer.TDT = T.TileLayer.extend({}), T.JR.tdt = function (t, i) {
        return new T.TileLayer.tdt(t, i)
    }, T.lR = {
        ZR: "202206011524", CR: function (t, i, n) {
            if (window.localStorage) {
                var e, o = localStorage.getItem(t);
                null == o || 0 == o.length || this.ZR != localStorage.getItem("TDT_version") ? (document.write('<script type="text/javascript" src="' + i + '"></script>'), window.ActiveXObject ? e = new ActiveXObject("Microsoft.XMLHTTP") : window.XMLHttpRequest && (e = new XMLHttpRequest), null != e && (e.open("GET", i), e.send(null), e.onreadystatechange = function () {
                    4 == e.readyState && 200 == e.status && (o = e.responseText, localStorage.setItem(t, o), localStorage.setItem("TDT_version", T.lR.ZR), null != n && n())
                })) : (T.lR.VR(o), null != n && n())
            } else T.lR.cR(i)
        }, BR: function (t, i) {
            if (T.oQ.ie8) return T.lR.vR(i), !1;
            if (window.localStorage) {
                var n, e = localStorage.getItem(t);
                null == e || 0 == e.length || this.ZR != localStorage.getItem("TDT_version") ? (window.ActiveXObject ? n = new ActiveXObject("Microsoft.XMLHTTP") : window.XMLHttpRequest && (n = new XMLHttpRequest), null != n && (n.open("GET", i), n.send(null), n.onreadystatechange = function () {
                    4 == n.readyState && 200 == n.status && (e = n.responseText, localStorage.setItem(t, e), localStorage.setItem("TDT_version", T.lR.ZR), e = null == e ? "" : e, T.lR.NR(e))
                })) : T.lR.NR(e)
            } else T.lR.vR(i)
        }, VR: function (t) {
            var i = document.getElementsByTagName("HEAD").item(0), n = document.createElement("script");
            n.type = "text/javascript", n.text = t, i.appendChild(n)
        }, NR: function (t) {
            var i = document.getElementsByTagName("HEAD").item(0), n = document.createElement("style");
            n.type = "text/css", n.styleSheet ? n.styleSheet.cssText = t : n.innerHTML = t, i.appendChild(n)
        }, cR: function (t) {
            var i = document.getElementsByTagName("HEAD").item(0), n = document.createElement("script");
            n.type = "text/javascript", n.src = t, i.appendChild(n)
        }, vR: function (t) {
            var i = document.getElementsByTagName("HEAD").item(0), n = document.createElement("link");
            n.type = "text/css", n.rel = "stylesheet", n.href = t, i.appendChild(n)
        }, bR: function (t, i) {
            var n = document.createElement("script");
            i && (n.onload = n.onreadystatechange = function () {
                this.readyState && "loaded" != this.readyState && "complete" !== this.readyState || (n.onload = n.onreadystatechange = null, i())
            });
            var e = document.getElementsByTagName("head")[0];
            n.type = "text/javascript", n.src = t, e.appendChild(n)
        }, onLoadJsCallBack: function (t) {
            var i = T.ScriptLoader.getObject();
            i.load(t, "UTF-8", this, function () {
                i = null, delete i
            })
        }, MR: function (t, i) {
            if (T.oQ.ie8) return T.lR.vR(i), !1;
            if (window.localStorage) {
                var n = localStorage.getItem(t);
                null == n || 0 == n.length || this.ZR != localStorage.getItem("TDT_version") ? (T.lR.vR(i), i.indexOf("tianditu4.0") != -1 && (i = T.w.E + "/api?v=4.0&name=tianditu4.0"), T.lR.bR(i, function () {
                    T.ObjectData && (n = T.ObjectData), localStorage.setItem(t, n), localStorage.setItem("TDT_version", T.lR.ZR), T.ObjectData = null
                })) : T.lR.NR(n)
            }
        }, nR: function (t, i) {
            if (T.oQ.ie8) return document.write('<script type="text/javascript" src="' + i + '"></script>'), !1;
            if (window.localStorage) {
                var n = localStorage.getItem(t);
                null == n || 0 == n.length || this.ZR != localStorage.getItem("TDT_version") ? (T.lR.cR(i), i.indexOf("components") != -1 && (i = T.w.E + "/api?v=4.0&name=components&tk=" + T.w.TMAP_AUTHKEY), i.indexOf("service") != -1 && (i = T.w.E + "/api?v=4.0&name=service&tk=" + T.w.TMAP_AUTHKEY), i.indexOf("military") != -1 && (i = T.w.E + "/api?v=4.0&name=military&tk=" + T.w.TMAP_AUTHKEY), T.lR.bR(i, function () {
                    T.ObjectData && (n = T.ObjectData), localStorage.setItem(t, n), localStorage.setItem("TDT_version", T.lR.ZR), T.ObjectData = null
                })) : T.lR.VR(n)
            }
        }
    }, T.qv = function (t) {
        if (t && 0 !== t.code) {
            T = {};
            var i = "天地图密钥错误，可能是因为您提供的Key不是有效的天地图开放平台Key，或此Key未对本应用授予JavaScriptAPI权限。您可以访问如下网址了解如何获得有效的Key：http://console.tianditu.com/api/key";
            alert(i)
        }
    }, T._R = T.HE.extend({
        options: {opacity: 1, Fq: "", mR: !1, Ue: null, dR: !1}, initialize: function (t, i, n) {
            this.FR = t, this.Qr = T.jq(i), T.setOptions(this, n)
        }, onAdd: function () {
            this.qr || (this.Wr(), this.options.opacity < 1 && this.Se()), this.options.mR && (T._Q.Rq(this.qr, "tdt-interactive"), this.kE(this.qr)), this.getPane().appendChild(this.qr), this.wr()
        }, onRemove: function () {
            T._Q.Qq(this.qr), this.options.mR && this.LE(this.qr)
        }, setOpacity: function (t) {
            return this.options.opacity = t, this.qr && this.Se(), this
        }, setStyle: function (t) {
            return t.opacity && this.setOpacity(t.opacity), this
        }, pe: function () {
            return this.jE && T._Q.Wq(this.qr), this
        }, ae: function () {
            return this.jE && T._Q.wq(this.qr), this
        }, setUrl: function (t) {
            return this.FR = t, this.qr && (this.qr.src = t), this
        }, setBounds: function (t) {
            return this.Qr = t, this.jE && this.wr(), this
        }, VE: function () {
            return this.options.Ue
        }, CE: function () {
            var t = {zoom: this.wr, viewreset: this.wr};
            return this.ZE && (t.Ge = this.ge), t
        }, getBounds: function () {
            return this.Qr
        }, getElement: function () {
            return this.qr
        }, Wr: function () {
            var t = this.qr = T._Q.s("img", "tdt-image-layer " + (this.ZE ? "tdt-zoom-animated" : ""));
            t.onselectstart = T.S.H, t.onmousemove = T.S.H, t.onload = T.D(this.wQ, this, "load"), this.options.dR && (t.dR = ""), t.src = this.FR, t.Fq = this.options.Fq
        }, ge: function (t) {
            var i = this.jE.cW(t.zoom), n = this.jE.DE(this.Qr.Zq(), t.zoom, t.center);
            T._Q.Uq(this.qr, n, i)
        }, wr: function () {
            var t = this.qr, i = new T.ZQ(this.jE.kw(this.Qr.Zq()), this.jE.kw(this.Qr.cq())), n = i.getSize();
            T._Q.setPosition(t, i.min), t.style.width = n.x + "px", t.style.height = n.y + "px"
        }, Se: function () {
            T._Q.setOpacity(this.qr, this.options.opacity)
        }
    }), T.Er = function (t, i, n) {
        return new T._R(t, i, n)
    }, T.Icon = T.c.extend({
        initialize: function (t) {
            T.setOptions(this, t)
        }, setIconUrl: function (t) {
            this.options.iconUrl = t, this.img && (this.img.src = t)
        }, getIconUrl: function (t) {
            if (this.img) return this.img.src
        }, setIconSize: function (t) {
            this.options.iconSize = t, this.img && (this.img.style.width = t.x + "px", this.img.style.height = t.y + "px")
        }, getIconSize: function () {
            return this.options.iconSize
        }, setIconAnchor: function (t) {
            this.options.iconAnchor = t, this.er(this.img, "icon")
        }, getIconAnchor: function (t) {
            return this.options.iconAnchor
        }, Rr: function (t) {
            return this.rr("icon", t)
        }, Tr: function (t) {
            return this.rr("shadow", t)
        }, rr: function (t, i) {
            var n = this.tr(t);
            return n ? (this.img = this.Yr(n, i && "IMG" === i.tagName ? i : null), this.er(this.img, t), this.img) : null
        }, er: function (t, i) {
            var n = this.options, e = n[i + "Size"];
            T.S.l(e) || e instanceof T.Point || (e = [e, e]);
            var o = T.SQ(e), s = T.SQ("shadow" === i && n.Ur || n.iconAnchor || o && o.dQ(2, !0));
            t.className = "tdt-marker-" + i + " " + (n.className || ""), s && (t.style.marginLeft = -s.x + "px", t.style.marginTop = -s.y + "px"), o && (t.style.width = o.x + "px", t.style.height = o.y + "px")
        }, Yr: function (t, i) {
            return i = i || document.createElement("img"), i.src = t, i
        }, tr: function (t) {
            return T.oQ.retina && this.options[t + "RetinaUrl"] || this.options[t + "Url"]
        }
    }), T.ur = function (t) {
        return new T.Icon(t)
    }, T.Icon.Default = T.Icon.extend({
        options: {
            iconSize: [25, 41],
            iconAnchor: [12, 41],
            popupAnchor: [1, -41],
            shadowSize: [41, 41]
        }, tr: function (t) {
            var i = t + "Url";
            if (this.options[i]) return this.options[i];
            var n = T.Icon.Default.imagePath;
            return n + "/marker-" + t + (T.oQ.retina && "icon" === t ? "-2x" : "") + ".png"
        }
    }), T.Icon.Default.imagePath = function () {
        var t, i, n, e, o = document.getElementsByTagName("script"), s = /[\/^]tdt[\-\._]?([\w\-\._]*)\.js\??/;
        for (t = 0, i = o.length; t < i; t++) if (n = o[t].src || "", n.match(s)) return e = n.split(s)[0], (e ? e + "/" : "") + "image"
    }(), T.Icon.Default.imagePath = T.w.e, T.Marker = T.Overlay.extend({
        options: {
            icon: new T.Icon.Default,
            mR: !0,
            draggable: !1,
            Ir: !0,
            title: "",
            zIndexOffset: 0,
            opacity: 1,
            ir: !0,
            Or: 250,
            type: 2,
            hE: "markerPane",
            pE: ["click", "dblclick", "mouseover", "mouseout", "contextmenu"]
        }, initialize: function (t, i) {
            T.setOptions(this, i), this.or = T.fq(t), this.Pr = null
        }, onAdd: function (t) {
            this.ZE = this.ZE && t.options.PW, this.ZE && t.on("Ge", this.ge, this), this.pr(), this.update()
        }, onRemove: function (t) {
            this.AE && this.AE.aE() && (this.options.draggable = !0, this.AE.Ar()), this.ZE && t.off("Ge", this.ge, this), this.ar(), this.Sr(), this.Pr = null
        }, CE: function () {
            return {zoom: this.update, viewreset: this.update}
        }, getType: function () {
            return this.options.type
        }, getMap: function () {
            return this.jE
        }, getLngLat: function () {
            return this.PE()
        }, PE: function () {
            return this.or
        }, setLngLat: function (t) {
            this.sr(t)
        }, sr: function (t) {
            var i = this.or;
            return this.or = T.fq(t), this.update(), this.wQ("move", {oldLngLat: i, lnglat: this.or})
        }, setZIndexOffset: function (t) {
            return this.options.zIndexOffset = t, this.update()
        }, setIcon: function (t) {
            return this.options.icon = t, this.jE && (this.pr(), this.update()), this.Dr && this.dr(this.Dr, this.Dr.options), this
        }, getIcon: function () {
            return this.options.icon
        }, enableDragging: function () {
            this.AE.enable()
        }, disableDragging: function () {
            this.AE.disable()
        }, getElement: function () {
            return this.Fr
        }, update: function () {
            if (this.Fr) {
                var t = this.jE.kw(this.or).hQ();
                this.fr(t)
            }
            return this
        }, pr: function () {
            var t = this.options, i = "tdt-zoom-" + (this.ZE ? "animated" : "hide"), n = t.icon.Rr(this.Fr), e = !1;
            n !== this.Fr && (this.Fr && this.ar(), e = !0, t.title && (n.title = t.title), t.Fq && (n.Fq = t.Fq)), T._Q.Rq(n, i), t.Ir && (n.tabIndex = "0"), this.Fr = n, t.ir && this.on({
                mouseover: this.Gr,
                mouseout: this.gr
            });
            var o = t.icon.Tr(this.Hr), s = !1;
            o !== this.Hr && (this.Sr(), s = !0), o && T._Q.Rq(o, i), this.Hr = o, t.opacity < 1 && this.Se(), e && this.getPane().appendChild(this.Fr), this.hr(), o && s && this.getPane("_w").appendChild(this.Hr)
        }, ar: function () {
            this.options.ir && this.off({
                mouseover: this.Gr,
                mouseout: this.gr
            }), T._Q.Qq(this.Fr), this.LE(this.Fr), this.Fr = null
        }, Sr: function () {
            this.Hr && T._Q.Qq(this.Hr), this.Hr = null
        }, fr: function (t) {
            T._Q.setPosition(this.Fr, t), this.Hr && T._Q.setPosition(this.Hr, t), this.Jr = t.y + this.options.zIndexOffset, this.gr()
        }, se: function (t) {
            this.Fr.style.zIndex = this.Jr + t
        }, ge: function (t) {
            var i = this.jE.DE(this.or, t.zoom, t.center).hQ();
            this.fr(i)
        }, hr: function () {
            if (this.options.mR && (T._Q.Rq(this.Fr, "tdt-interactive"), this.kE(this.Fr), T.Kr.jr)) {
                var t = this.options.draggable;
                this.AE && (t = this.AE.aE(), this.AE.disable()), this.AE = new T.Kr.jr(this), t && this.AE.enable()
            }
        }, setOpacity: function (t) {
            return this.options.opacity = t, this.jE && this.Se(), this
        }, Se: function () {
            var t = this.options.opacity;
            T._Q.setOpacity(this.Fr, t), this.Hr && T._Q.setOpacity(this.Hr, t)
        }, Gr: function () {
            this.se(this.options.Or)
        }, gr: function () {
            this.se(0)
        }
    }), T.kr = function (t, i) {
        return new T.Marker(t, i)
    }, T.DivIcon = T.Icon.extend({
        options: {iconSize: [12, 12], html: !1, bgPos: null, className: "tdt-div-icon"},
        Rr: function (t) {
            var i = t && "DIV" === t.tagName ? t : document.createElement("div"), n = this.options;
            if (i.innerHTML = n.html !== !1 ? n.html : "", n.bgPos) {
                var e = T.SQ(n.bgPos);
                i.style.backgroundPosition = -e.x + "px " + -e.y + "px"
            }
            return this.er(i, "icon"), i
        },
        Tr: function () {
            return null
        }
    }), T.Lr = function (t) {
        return new T.DivIcon(t)
    }, T.Map.n({lr: !1}), T.Zr = T.HE.extend({
        options: {
            hE: "infoWindowPane",
            minWidth: 50,
            Cr: 300,
            maxHeight: null,
            offset: [0, 7],
            autoPan: !1,
            autoPanPadding: [5, 5],
            Vr: null,
            cr: null,
            closeButton: !0,
            Br: !0,
            vr: !1,
            Nr: !0
        }, initialize: function (t, i) {
            T.setOptions(this, t), this.br = i
        }, onAdd: function (t) {
            this.ZE = this.ZE && this.options.Nr, this.Ow || this.DW(), t.Nw && T._Q.setOpacity(this.Ow, 0), clearTimeout(this.Mr), this.getPane().appendChild(this.Ow), this.update(), t.Nw && T._Q.setOpacity(this.Ow, 1), t.wQ("nr", {_r: this}), this.wQ("open", {lnglat: this.or}), this.br && (this.br.wQ("nr", {_r: this}, !0), this.br.on("UE", T.oq.stopPropagation))
        }, mr: function (t) {
            return t.QT(this), this
        }, onRemove: function (t) {
            t.Nw ? (T._Q.setOpacity(this.Ow, 0), this.Mr = setTimeout(T.D(T._Q.Qq, T._Q, this.Ow), 200)) : T._Q.Qq(this.Ow), t.wQ("qT", {_r: this}), this.wQ("close", {
                lnglat: this.or,
                infowindow: this
            }), this.br && (this.br.wQ("qT", {_r: this}, !0), this.br.off("UE", T.oq.stopPropagation))
        }, PE: function () {
            return this.or
        }, sr: function (t) {
            return this.or = T.fq(t), this.jE && (this.WT(), this.wT()), this
        }, getContent: function () {
            return this.ET
        }, setContent: function (t) {
            return this.ET = t, this.update(), this
        }, getElement: function () {
            return this.Ow
        }, update: function () {
            this.jE && (this.Ow.style.visibility = "hidden", this.eT(), this.RT(), this.WT(), this.Ow.style.visibility = "", this.wT())
        }, CE: function () {
            var t = {zoom: this.WT, viewreset: this.WT};
            return this.ZE && (t.Ge = this.ge), ("closeOnClick" in this.options ? this.options.closeOnClick : this.jE.options.lr) && (t.UE = this.rT), this.options.vr && (t.moveend = this.wT), t
        }, isOpen: function () {
            return !!this.jE && this.jE.hasLayer(this)
        }, pe: function () {
            return this.jE && T._Q.Wq(this.Ow), this
        }, ae: function () {
            return this.jE && T._Q.wq(this.Ow), this
        }, rT: function () {
            this.jE && (this.wQ("clickclose", {}), this.jE.TT(this))
        }, DW: function () {
            var t = "tdt-infowindow",
                i = this.Ow = T._Q.s("div", t + " " + (this.options.className || "") + " tdt-zoom-" + (this.ZE ? "animated" : "hide"));
            if (this.options.closeButton) {
                var n = this.tT = T._Q.s("a", t + "-close-button", i);
                n.href = "#close", n.innerHTML = "&#215;", T.oq.on(n, "click", this.YT, this)
            }
            var e = this.UT = T._Q.s("div", t + "-content-wrapper", i);
            this.uT = T._Q.s("div", t + "-content", e), T.oq.iT(e).IT(this.uT).on(e, "contextmenu", T.oq.stopPropagation), this.OT = T._Q.s("div", t + "-tip-container", i), this.oT = T._Q.s("div", t + "-tip", this.OT)
        }, eT: function () {
            if (this.ET) {
                var t = this.uT, i = "function" == typeof this.ET ? this.ET(this.br || this) : this.ET;
                if ("string" == typeof i) t.innerHTML = i; else {
                    for (; t.hasChildNodes();) t.removeChild(t.firstChild);
                    t.appendChild(i)
                }
                this.wQ("contentupdate")
            }
        }, RT: function () {
            var t = this.uT, i = t.style;
            i.width = "", i.whiteSpace = "nowrap";
            var n = t.offsetWidth;
            n = Math.min(n, this.options.Cr), n = Math.max(n, this.options.minWidth), i.width = n + 1 + "px", i.whiteSpace = "", i.height = "";
            var e = t.offsetHeight, o = this.options.maxHeight, s = "tdt-infowindow-scrolled";
            o && e > o ? (i.height = o + "px", T._Q.Rq(t, s)) : T._Q.Tq(t, s), this.PT = this.Ow.offsetWidth
        }, WT: function () {
            if (this.jE) {
                var t = this.jE.kw(this.or), i = T.SQ(this.options.offset), n = this._getAnchor();
                this.ZE ? T._Q.setPosition(this.Ow, t.AQ(n)) : i = i.AQ(t).AQ(n);
                var e = this.pT = -i.y, o = this.AT = -Math.round(this.PT / 2) + i.x;
                this.Ow.style.bottom = e + "px", this.Ow.style.left = o + "px"
            }
        }, ge: function (t) {
            var i = this.jE.DE(this.or, t.zoom, t.center), n = this._getAnchor();
            T._Q.setPosition(this.Ow, i.AQ(n))
        }, wT: function () {
            if (!(!this.options.autoPan || this.jE.EE && this.jE.EE.aT)) {
                var t = this.jE, i = this.Ow.offsetHeight, n = this.PT, e = new T.Point(this.AT, -i - this.pT);
                this.ZE && e.aQ(T._Q.getPosition(this.Ow));
                var o = t.Zw(e), s = T.SQ(this.options.autoPanPadding), r = T.SQ(this.options.Vr || s),
                    h = T.SQ(this.options.cr || s), a = t.getSize(), u = 0, c = 0;
                o.x + n + h.x > a.x && (u = o.x + n - a.x + h.x), o.x - u - r.x < 0 && (u = o.x - r.x), o.y + i + h.y > a.y && (c = o.y + i - a.y + h.y), o.y - c - r.y < 0 && (c = o.y - r.y), (u || c) && t.wQ("ST").panBy([u, c])
            }
        }, YT: function (t) {
            this.rT(), T.oq.uw(t)
        }, _getAnchor: function () {
            return T.SQ(this.br && this.br.sT ? this.br.sT() : [0, 0])
        }
    }), T._r = function (t, i) {
        return new T.Zr(t, i)
    }, T.Map.M({
        QT: function (t, i, n) {
            return t instanceof T.Zr || (t = new T.Zr(n).setContent(t)), i && t.sr(i), this.hasLayer(t) ? this : (this.Dr && this.Dr.options.Br && this.TT(), this.Dr = t, this.addLayer(t))
        }, openInfoWindow: function (t, i, n) {
            this.QT(t, i, n)
        }, closeInfoWindow: function (t) {
            this.TT(t)
        }, TT: function (t) {
            return t && t !== this.Dr || (t = this.Dr, this.Dr = null), t && this.removeLayer(t), this
        }, closeInfoWindow: function (t) {
            this.TT(t)
        }
    }), T.HE.M({
        dr: function (t, i) {
            return t instanceof T.Zr ? (T.setOptions(t, i), this.Dr = t, t.br = this) : (this.Dr && !i || (this.Dr = new T.Zr(i, this)), this.Dr.setContent(t)), this.DT || (this.on({
                Qq: this.TT,
                move: this.dT
            }), this.DT = !0), this
        }, FT: function () {
            return this.Dr && (this.off({Qq: this.TT, move: this.dT}), this.DT = !1, this.Dr = null), this
        }, openInfoWindow: function (t, i) {
            this.QT(), this.Pr || (this.Pr = this.dr(t, i), this.QT())
        }, closeInfoWindow: function () {
            this.TT()
        }, QT: function (t, i) {
            if (t instanceof T.HE || (i = t, t = this), t instanceof T.fT) for (var n in this.hW) {
                t = this.hW[n];
                break
            }
            return i || (i = t.getCenter ? t.getCenter() : t.PE()), this.Dr && this.jE && (this.Dr.br = t, this.Dr.update(), this.jE.QT(this.Dr, i)), this
        }, TT: function () {
            return this.Dr && this.Dr.rT(), this
        }, GT: function (t) {
            return this.Dr && (this.Dr.jE ? this.TT() : this.QT(t)), this
        }, gT: function () {
            return this.Dr.isOpen()
        }, isOpen: function () {
            this.gT()
        }, HT: function (t) {
            return this.Dr && this.Dr.setContent(t), this
        }, hT: function () {
            return this.Dr
        }, JT: function (t) {
            var i = t.layer || t.target;
            if (this.Dr && this.jE) return T.oq.uw(t), i instanceof T.jT ? void this.QT(t.layer || t.target, t.KT) : void (this.jE.hasLayer(this.Dr) && this.Dr.br === i ? this.TT() : this.QT(i, t.KT))
        }, dT: function (t) {
            this.Dr.sr(t.KT)
        }
    }), T.Marker.M({
        sT: function () {
            return this.options.icon.options.popupAnchor || (this.options.icon.options.iconAnchor ? T.S.l(this.options.icon.options.iconAnchor) ? this.options.icon.options.popupAnchor = [0, -this.options.icon.options.iconAnchor[1]] : this.options.icon.options.popupAnchor = [0, -this.options.icon.options.iconAnchor.y] : this.options.icon.options.popupAnchor = [0, 0]), this.options.icon.options.popupAnchor
        }
    }), T.InfoWindow = T.Zr.extend({
        options: {type: 3}, initialize: function (t, i, n) {
            this.ET = t, T.setOptions(this, i), this.br = n
        }, getType: function () {
            return this.options.type
        }, setMinWidth: function (t) {
            this.options.minWidth = t, this.update()
        }, setMaxWidth: function (t) {
            this.options.Cr = t, this.update()
        }, setMaxHeight: function (t) {
            this.options.maxHeight = t, this.update()
        }, setLngLat: function (t) {
            this.sr(t)
        }, setOffset: function (t) {
            this.options.offset = t, this.update()
        }, getOffset: function () {
            return this.options.offset
        }, closeInfoWindow: function () {
            this.rT()
        }
    }), T.LayerGroup = T.HE.extend({
        initialize: function (t) {
            this.hW = {};
            var i, n;
            if (t) for (i = 0, n = t.length; i < n; i++) this.addLayer(t[i])
        }, addLayer: function (t) {
            var i = this.getLayerId(t);
            return this.hW[i] = t, this.jE && this.jE.addLayer(t), this
        }, removeLayer: function (t) {
            var i = t in this.hW ? t : this.getLayerId(t);
            return this.jE && this.hW[i] && this.jE.removeLayer(this.hW[i]), delete this.hW[i], this
        }, hasLayer: function (t) {
            return !!t && (t in this.hW || this.getLayerId(t) in this.hW)
        }, clearLayers: function () {
            for (var t in this.hW) this.removeLayer(this.hW[t]);
            return this
        }, kT: function (t) {
            var i, n, e = Array.prototype.slice.call(arguments, 1);
            for (i in this.hW) n = this.hW[i], n[t] && n[t].apply(n, e);
            return this
        }, onAdd: function (t) {
            for (var i in this.hW) t.addLayer(this.hW[i])
        }, onRemove: function (t) {
            for (var i in this.hW) t.removeLayer(this.hW[i])
        }, bE: function (t, i) {
            for (var n in this.hW) t.call(i, this.hW[n]);
            return this
        }, getLayer: function (t) {
            return this.hW[t]
        }, getLayers: function () {
            var t = [];
            for (var i in this.hW) t.push(this.hW[i]);
            return t
        }, setZIndex: function (t) {
            return this.kT("setZIndex", t)
        }, getLayerId: function (t) {
            return T.d(t)
        }
    }), T.LT = function (t) {
        return new T.LayerGroup(t)
    }, T.fT = T.LayerGroup.extend({
        addLayer: function (t) {
            return this.hasLayer(t) ? this : (t.TQ(this), T.LayerGroup.prototype.addLayer.call(this, t), this.wQ("layeradd", {layer: t}))
        }, removeLayer: function (t) {
            return this.hasLayer(t) ? (t in this.hW && (t = this.hW[t]), t.tQ(this), T.LayerGroup.prototype.removeLayer.call(this, t), this.wQ("layerremove", {layer: t})) : this
        }, setStyle: function (t) {
            return this.kT("setStyle", t)
        }, pe: function () {
            return this.kT("pe")
        }, ae: function () {
            return this.kT("ae")
        }, getBounds: function () {
            var t = new T.Kq;
            for (var i in this.hW) {
                var n = this.hW[i];
                t.extend(n.getBounds ? n.getBounds() : n.PE())
            }
            return t
        }
    }), T.lT = function (t) {
        return new T.fT(t)
    }, T.MapType = T.LayerGroup.extend({
        initialize: function (t, i, n) {
            this.name = i, this.hW = {};
            var e, o;
            if (t) for (e = 0, o = t.length; e < o; e++) this.addLayer(t[e])
        }, getName: function () {
            return this.name
        }
    }), T.Map.M({
        LW: function (t) {
            var i = new T.TileLayer("", {minZoom: 1, maxZoom: 18});
            i.getTileUrl = function (t) {
                return 0 == T.gq.EW ? T.w.t() + "TILECOL=" + t.x + "&TILEROW=" + t.y + "&TILEMATRIX=" + t.z : T.w.r() + "TILECOL=" + t.x + "&TILEROW=" + t.y + "&TILEMATRIX=" + t.z
            };
            var n = new T.TileLayer("", {minZoom: 1, maxZoom: 18});
            n.getTileUrl = function (t) {
                return 0 == T.gq.EW ? T.w.Y() + "TILECOL=" + t.x + "&TILEROW=" + t.y + "&TILEMATRIX=" + t.z : T.w.T() + "TILECOL=" + t.x + "&TILEROW=" + t.y + "&TILEMATRIX=" + t.z
            }, TMAP_NORMAL_MAP = new T.MapType([i, n], "TMAP_NORMAL_MAP", {a: 1});
            var e = new T.TileLayer("", {minZoom: 1, maxZoom: 18});
            e.getTileUrl = function (t) {
                return 0 == T.gq.EW ? T.w.I() + "TILECOL=" + t.x + "&TILEROW=" + t.y + "&TILEMATRIX=" + t.z : T.w.U() + "TILECOL=" + t.x + "&TILEROW=" + t.y + "&TILEMATRIX=" + t.z
            };
            var o = new T.TileLayer("", {minZoom: 1, maxZoom: 18});
            o.getTileUrl = function (t) {
                return 0 == T.gq.EW ? T.w.i() + "TILECOL=" + t.x + "&TILEROW=" + t.y + "&TILEMATRIX=" + t.z : T.w.u() + "TILECOL=" + t.x + "&TILEROW=" + t.y + "&TILEMATRIX=" + t.z
            }, TMAP_SATELLITE_MAP = new T.MapType([e], "TMAP_SATELLITE_MAP"), TMAP_HYBRID_MAP = new T.MapType([e, o], "TMAP_HYBRID_MAP");
            var s = new T.TileLayer("", {minZoom: 1, maxZoom: 18});
            s.getTileUrl = function (t) {
                return 0 == T.gq.EW ? T.w.P() + "TILECOL=" + t.x + "&TILEROW=" + t.y + "&TILEMATRIX=" + t.z : T.w.O() + "TILECOL=" + t.x + "&TILEROW=" + t.y + "&TILEMATRIX=" + t.z
            };
            var r = new T.TileLayer("", {minZoom: 1, maxZoom: 18});
            r.getTileUrl = function (t) {
                return 0 == T.gq.EW ? T.w.p() + "TILECOL=" + t.x + "&TILEROW=" + t.y + "&TILEMATRIX=" + t.z : T.w.o() + "TILECOL=" + t.x + "&TILEROW=" + t.y + "&TILEMATRIX=" + t.z
            }, TMAP_TERRAIN_MAP = new T.MapType([s], "TMAP_TERRAIN_MAP"), TMAP_TERRAIN_HYBRID_MAP = new T.MapType([s, r], "TMAP_TERRAIN_HYBRID_MAP")
        }
    }), T.ZT = T.HE.extend({
        options: {MW: .1}, initialize: function (t) {
            T.setOptions(this, t), T.d(this)
        }, onAdd: function () {
            this.Ow || (this.sW(), this.ZE && T._Q.Rq(this.Ow, "tdt-zoom-animated")), this.getPane().appendChild(this.Ow), this.Oe()
        }, onRemove: function () {
            T._Q.Qq(this.Ow)
        }, CE: function () {
            var t = {viewreset: this.wr, zoom: this.CT, moveend: this.Oe};
            return this.ZE && (t.Ge = this.VT), t
        }, VT: function (t) {
            this.cT(t.center, t.zoom)
        }, CT: function () {
            this.cT(this.jE.getCenter(), this.jE.getZoom())
        }, cT: function (t, i) {
            var n = this.jE.cW(i, this.fW), e = T._Q.getPosition(this.Ow),
                o = this.jE.getSize().fQ(.5 + this.options.MW), s = this.jE.nq(this.BT, i), r = this.jE.nq(t, i),
                h = r.sQ(s), a = o.fQ(-n).AQ(e).AQ(o).sQ(h);
            T.oQ.any3d ? T._Q.Uq(this.Ow, a, n) : T._Q.setPosition(this.Ow, a)
        }, wr: function () {
            this.Oe(), this.cT(this.BT, this.fW)
        }, Oe: function () {
            var t = this.options.MW, i = this.jE.getSize(), n = this.jE.Lw(i.fQ(-t)).hQ();
            this.Qr = new T.ZQ(n, n.AQ(i.fQ(1 + 2 * t)).hQ()), this.BT = this.jE.getCenter(), this.fW = this.jE.getZoom()
        }
    }), T.Map.M({
        vT: function (t) {
            var i = t.options.iW || this.NT(t.options.hE) || this.options.iW || this.bT;
            return i || (i = this.bT = this.options._T && T.nT() || T.MT()), this.hasLayer(i) || this.addLayer(i), i
        }, NT: function (t) {
            if ("overlayPane" === t || void 0 === t) return !1;
            var i = this.nw[t];
            return void 0 === i && (i = T.SVG && T.MT({hE: t}) || T.mT && T.nT({hE: t}), this.nw[t] = i), i
        }
    }), T.jT = T.Overlay.extend({
        options: {
            stroke: !0,
            color: "#0000FF",
            weight: 3,
            opacity: .5,
            Qt: "round",
            qt: "round",
            dashArray: null,
            dashOffset: null,
            fill: !1,
            fillColor: null,
            fillOpacity: .2,
            Wt: "evenodd",
            mR: !0
        }, vE: function (t) {
            this.bT = t.vT(this)
        }, onAdd: function () {
            this.bT.wt(this), this.wr(), this.bT.Et(this)
        }, onRemove: function () {
            this.bT.et(this)
        }, CE: function () {
            return {zoomend: this.Rt, moveend: this.Oe, viewreset: this.wr}
        }, redraw: function () {
            return this.jE && this.bT.rt(this), this
        }, setStyle: function (t) {
            return T.setOptions(this, t), this.bT && this.bT.Tt(this), this
        }, pe: function () {
            return this.bT && this.bT.Gr(this), this
        }, ae: function () {
            return this.bT && this.bT.tt(this), this
        }, getElement: function () {
            return this.Yt
        }, wr: function () {
            this.Rt(), this.Oe()
        }, Ut: function () {
            return (this.options.stroke ? this.options.weight / 2 : 0) + (T.oQ.touch ? 10 : 0)
        }
    }), T.ut = {
        It: function (t, i) {
            if (!i || !t.length) return t.slice();
            var n = i * i;
            return t = this.it(t, n), t = this.Ot(t, n)
        }, ot: function (t, i, n) {
            return Math.sqrt(this.Pt(t, i, n, !0))
        }, pt: function (t, i, n) {
            return this.Pt(t, i, n)
        }, Ot: function (t, i) {
            var n = t.length, e = typeof Uint8Array != void 0 + "" ? Uint8Array : Array, o = new e(n);
            o[0] = o[n - 1] = 1, this.At(t, o, i, 0, n - 1);
            var s, r = [];
            for (s = 0; s < n; s++) o[s] && r.push(t[s]);
            return r
        }, At: function (t, i, n, e, o) {
            var s, r, h, a = 0;
            for (r = e + 1; r <= o - 1; r++) h = this.Pt(t[r], t[e], t[o], !0), h > a && (s = r, a = h);
            a > n && (i[s] = 1, this.At(t, i, n, e, s), this.At(t, i, n, s, o))
        }, it: function (t, i) {
            for (var n = [t[0]], e = 1, o = 0, s = t.length; e < s; e++) this.at(t[e], t[o]) > i && (n.push(t[e]), o = e);
            return o < s - 1 && n.push(t[s - 1]), n
        }, St: function (t, i, n, e, o) {
            var s, r, h, a = e ? this.st : this.Dt(t, n), u = this.Dt(i, n);
            for (this.st = u; ;) {
                if (!(a | u)) return [t, i];
                if (a & u) return !1;
                s = a || u, r = this.dt(t, i, s, n, o), h = this.Dt(r, n), s === a ? (t = r, a = h) : (i = r, u = h)
            }
        }, dt: function (t, i, n, e, o) {
            var s, r, h = i.x - t.x, a = i.y - t.y, u = e.min, c = e.max;
            return 8 & n ? (s = t.x + h * (c.y - t.y) / a, r = c.y) : 4 & n ? (s = t.x + h * (u.y - t.y) / a, r = u.y) : 2 & n ? (s = c.x, r = t.y + a * (c.x - t.x) / h) : 1 & n && (s = u.x, r = t.y + a * (u.x - t.x) / h), new T.Point(s, r, o)
        }, Dt: function (t, i) {
            var n = 0;
            return t.x < i.min.x ? n |= 1 : t.x > i.max.x && (n |= 2), t.y < i.min.y ? n |= 4 : t.y > i.max.y && (n |= 8), n
        }, at: function (t, i) {
            var n = i.x - t.x, e = i.y - t.y;
            return n * n + e * e
        }, Pt: function (t, i, n, e) {
            var o, s = i.x, r = i.y, h = n.x - s, a = n.y - r, u = h * h + a * a;
            return u > 0 && (o = ((t.x - s) * h + (t.y - r) * a) / u, o > 1 ? (s = n.x, r = n.y) : o > 0 && (s += h * o, r += a * o)), h = t.x - s, a = t.y - r, e ? h * h + a * a : new T.Point(s, r)
        }
    }, T.Polyline = T.jT.extend({
        options: {Ft: 1, type: 4, ft: !1}, initialize: function (t, i) {
            T.setOptions(this, i), this.Gt(t), this.gt = "solid", this.options.lineStyle && this.setLineStyle(this.options.lineStyle)
        }, getType: function () {
            return this.options.type
        }, Ht: function () {
            return this.ht
        }, getLngLats: function () {
            return this.Ht()
        }, Jt: function (t) {
            return this.Gt(t), this.redraw()
        }, setLngLats: function (t) {
            this.Jt(t)
        }, setColor: function (t) {
            this.setStyle({color: t})
        }, getColor: function () {
            return this.options.color
        }, setWeight: function (t) {
            this.setStyle({weight: t})
        }, getWeight: function () {
            return this.options.weight
        }, setOpacity: function (t) {
            this.setStyle({opacity: t})
        }, getOpacity: function () {
            return this.options.opacity
        }, setLineStyle: function (t) {
            "dashed" == t ? (this.gt = "dashed", T.oQ.ie8 || T.oQ.ie7 ? this.setStyle({dashArray: "2,2"}) : this.setStyle({dashArray: "4"})) : (this.gt = "solid", this.setStyle({dashArray: ""}))
        }, getLineStyle: function () {
            return this.gt
        }, getMap: function () {
            return this.jE
        }, enableEdit: function () {
            this.jt && this.jt.enable()
        }, disableEdit: function () {
            this.jt && this.jt.disable()
        }, isEditable: function () {
            return this.jt.aE()
        }, Kt: function () {
            return !this.ht.length
        }, kt: function (t) {
            for (var i, n, e = 1 / 0, o = null, s = T.ut.Pt, r = 0, h = this.Lt.length; r < h; r++) for (var a = this.Lt[r], u = 1, c = a.length; u < c; u++) {
                i = a[u - 1], n = a[u];
                var l = s(t, i, n, !0);
                l < e && (e = l, o = s(t, i, n))
            }
            return o && (o.distance = Math.sqrt(e)), o
        }, getCenter: function () {
            var t, i, n, e, o, s, r, h = this.lt[0], a = h.length;
            if (!a) return null;
            for (t = 0, i = 0; t < a - 1; t++) i += h[t].distanceTo(h[t + 1]) / 2;
            if (0 === i) return this.jE.Dw(h[0]);
            for (t = 0, e = 0; t < a - 1; t++) if (o = h[t], s = h[t + 1], n = o.distanceTo(s), e += n, e > i) return r = (e - i) / n, this.jE.Dw([s.x - r * (s.x - o.x), s.y - r * (s.y - o.y)])
        }, getBounds: function () {
            return this.Qr
        }, Zt: function (t, i) {
            return i = i || this.Ct(), t = T.fq(t), i.push(t), this.Qr.extend(t), this.redraw()
        }, Gt: function (t) {
            this.Qr = new T.Kq, this.ht = this.Vt(t)
        }, Ct: function () {
            return T.Polyline.ct(this.ht) ? this.ht : this.ht[0]
        }, Vt: function (t) {
            for (var i = [], n = T.Polyline.ct(t), e = 0, o = t.length; e < o; e++) n ? (i[e] = T.fq(t[e]), this.Qr.extend(i[e])) : i[e] = this.Vt(t[e]);
            return i
        }, Rt: function () {
            var t = new T.ZQ;
            this.lt = [], this.Bt(this.ht, this.lt, t);
            var i = this.Ut(), n = new T.Point(i, i);
            this.Qr.vQ() && t.vQ() && (t.min.DQ(n), t.max.aQ(n), this.vt = t)
        }, Bt: function (t, i, n) {
            var e, o, s = t[0] instanceof T.dq, r = t.length;
            if (s) {
                for (o = [], e = 0; e < r; e++) o[e] = this.jE.kw(t[e]), n.extend(o[e]);
                i.push(o)
            } else for (e = 0; e < r; e++) this.Bt(t[e], i, n)
        }, Nt: function () {
            var t = this.bT.Qr;
            if (this.Lt = [], this.vt && this.vt.intersects(t)) {
                if (this.options.ft) return void (this.Lt = this.lt);
                var i, n, e, o, s, r, h, a = this.Lt;
                for (i = 0, e = 0, o = this.lt.length; i < o; i++) for (h = this.lt[i], n = 0, s = h.length; n < s - 1; n++) r = T.ut.St(h[n], h[n + 1], t, n, !0), r && (a[e] = a[e] || [], a[e].push(r[0]), r[1] === h[n + 1] && n !== s - 2 || (a[e].push(r[1]), e++))
            }
        }, bt: function () {
            for (var t = this.Lt, i = this.options.Ft, n = 0, e = t.length; n < e; n++) t[n] = T.ut.It(t[n], i)
        }, Oe: function () {
            this.jE && (this.Nt(), this.bt(), this.rt())
        }, rt: function () {
            this.bT.Mt(this)
        }, show: function () {
            this.getElement().style.display = "block"
        }, hide: function () {
            this.getElement().style.display = "none"
        }, isHidden: function () {
            return "none" == this.getElement().style.display
        }
    }), T.nt = function (t, i) {
        return new T.Polyline(t, i)
    }, T.Polyline.ct = function (t) {
        return !T.S.l(t[0]) || "object" != typeof t[0][0] && "undefined" != typeof t[0][0]
    }, T._t = {}, T._t.mt = function (t, i, n) {
        var e, o, s, r, h, a, u, c, l, f = [1, 4, 2, 8], d = T.ut;
        for (o = 0, u = t.length; o < u; o++) t[o]._code = d.Dt(t[o], i);
        for (r = 0; r < 4; r++) {
            for (c = f[r], e = [], o = 0, u = t.length, s = u - 1; o < u; s = o++) h = t[o], a = t[s], h._code & c ? a._code & c || (l = d.dt(a, h, c, i, n), l._code = d.Dt(l, i), e.push(l)) : (a._code & c && (l = d.dt(a, h, c, i, n), l._code = d.Dt(l, i), e.push(l)), e.push(h));
            t = e
        }
        return t
    }, T.Polygon = T.Polyline.extend({
        options: {fill: !0, type: 5}, setFillColor: function (t) {
            this.setStyle({fillColor: t})
        }, getFillColor: function () {
            return this.options.fillColor
        }, setFillOpacity: function (t) {
            this.setStyle({fillOpacity: t})
        }, getFillOpacity: function () {
            return this.options.fillOpacity
        }, Kt: function () {
            return !this.ht.length || !this.ht[0].length
        }, getCenter: function () {
            var t, i, n, e, o, s, r, h, a, u = this.lt[0], c = u.length;
            if (!c) return null;
            for (s = r = h = 0, t = 0, i = c - 1; t < c; i = t++) n = u[t], e = u[i], o = n.y * e.x - e.y * n.x, r += (n.x + e.x) * o, h += (n.y + e.y) * o, s += 3 * o;
            return a = 0 === s ? u[0] : [r / s, h / s], this.jE.Dw(a)
        }, Vt: function (t) {
            var i = T.Polyline.prototype.Vt.call(this, t), n = i.length;
            return n >= 2 && i[0] instanceof T.dq && i[0].equals(i[n - 1]) && i.pop(), i
        }, Gt: function (t) {
            T.Polyline.prototype.Gt.call(this, t), T.Polyline.ct(this.ht) && (this.ht = [this.ht])
        }, Ct: function () {
            return T.Polyline.ct(this.ht[0]) ? this.ht[0] : this.ht[0][0]
        }, Nt: function () {
            var t = this.bT.Qr, i = this.options.weight, n = new T.Point(i, i);
            if (t = new T.ZQ(t.min.sQ(n), t.max.AQ(n)), this.Lt = [], this.vt && this.vt.intersects(t)) {
                if (this.options.ft) return void (this.Lt = this.lt);
                for (var e, o = 0, s = this.lt.length; o < s; o++) e = T._t.mt(this.lt[o], t, !0), e.length && this.Lt.push(e)
            }
        }, rt: function () {
            this.bT.Mt(this, !0)
        }
    }), T.QY = function (t, i) {
        return new T.Polygon(t, i)
    }, T.Rectangle = T.Polygon.extend({
        options: {type: 6}, initialize: function (t, i) {
            T.Polygon.prototype.initialize.call(this, this.qY(t), i)
        }, setBounds: function (t) {
            return this.Jt(this.qY(t))
        }, qY: function (t) {
            return t = T.jq(t), [t.getSouthWest(), t.Zq(), t.getNorthEast(), t.cq()]
        }
    }), T.WY = function (t, i) {
        return new T.Rectangle(t, i)
    }, T.wY = T.jT.extend({
        options: {fill: !0, radius: 10, type: 8}, initialize: function (t, i) {
            T.setOptions(this, i), this.or = T.fq(t), this.EY = this.options.radius
        }, sr: function (t) {
            return this.or = T.fq(t), this.redraw(), this.wQ("move", {KT: this.or})
        }, PE: function () {
            return this.or
        }, setRadius: function (t) {
            return this.options.radius = this.EY = t, this.redraw()
        }, getRadius: function () {
            return this.EY
        }, setStyle: function (t) {
            var i = t && t.radius || this.EY;
            return T.jT.prototype.setStyle.call(this, t), this.setRadius(i), this
        }, Rt: function () {
            this.eY = this.jE.kw(this.or), this.RY()
        }, RY: function () {
            var t = this.EY, i = this.rY || t, n = this.Ut(), e = [t + n, i + n];
            this.vt = new T.ZQ(this.eY.sQ(e), this.eY.AQ(e))
        }, Oe: function () {
            this.jE && this.rt()
        }, rt: function () {
            this.bT.TY(this)
        }, tY: function () {
            return this.EY && !this.bT.Qr.intersects(this.vt)
        }
    }), T.YY = function (t, i) {
        return new T.wY(t, i)
    }, T.Circle = T.wY.extend({
        initialize: function (t, i, n) {
            "number" == typeof i && (i = T.extend({}, n, {radius: i})), T.setOptions(this, i), this.or = T.fq(t), isNaN(this.options.radius), this.UY = this.options.radius, this.gt = "solid", this.options.lineStyle && this.setLineStyle(this.options.lineStyle)
        }, getType: function () {
            return this.options.type
        }, setCenter: function (t) {
            this.sr(t)
        }, getCenter: function () {
            return this.PE()
        }, setColor: function (t) {
            this.setStyle({color: t})
        }, getColor: function () {
            return this.options.color
        }, setWeight: function (t) {
            this.setStyle({weight: t})
        }, getWeight: function () {
            return this.options.weight
        }, setOpacity: function (t) {
            this.setStyle({opacity: t})
        }, getOpacity: function () {
            return this.options.opacity
        }, setFillColor: function (t) {
            this.setStyle({fillColor: t})
        }, getFillColor: function () {
            return this.options.fillColor
        }, setFillOpacity: function (t) {
            this.setStyle({fillOpacity: t})
        }, getFillOpacity: function () {
            return this.options.fillOpacity
        }, setLineStyle: function (t) {
            "dashed" == t ? (this.gt = "dashed", T.oQ.ie8 || T.oQ.ie7 ? this.setStyle({dashArray: "2,2"}) : this.setStyle({dashArray: "4"})) : (this.gt = "solid", this.setStyle({dashArray: ""}))
        }, getLineStyle: function () {
            return this.gt
        }, enableEdit: function () {
            this.jt && this.jt.enable()
        }, isEditable: function () {
            return this.jt.aE()
        }, disableEdit: function () {
            this.jt && this.jt.disable()
        }, getMap: function () {
            return this.jE
        }, setRadius: function (t) {
            return this.UY = t, this.redraw()
        }, getRadius: function () {
            return this.UY
        }, getBounds: function () {
            var t = [this.EY, this.rY || this.EY];
            return new T.Kq(this.jE.Dw(this.eY.sQ(t)), this.jE.Dw(this.eY.AQ(t)))
        }, setStyle: T.jT.prototype.setStyle, Rt: function () {
            var t = this.or.lng, i = this.or.lat, n = this.jE, e = n.options.IW;
            if (e.distance === T.gq.Gq.distance) {
                var o = Math.PI / 180, s = this.UY / T.gq.Gq.R / o, r = n.nq([i + s, t]), h = n.nq([i - s, t]),
                    a = r.AQ(h).dQ(2), u = n._q(a).lat,
                    c = Math.acos((Math.cos(s * o) - Math.sin(i * o) * Math.sin(u * o)) / (Math.cos(i * o) * Math.cos(u * o))) / o;
                (isNaN(c) || 0 === c) && (c = s / Math.cos(Math.PI / 180 * i)), this.eY = a.sQ(n.Jw()), this.EY = isNaN(c) ? 0 : Math.max(Math.round(a.x - n.nq([u, t - c]).x), 1), this.rY = Math.max(Math.round(a.y - r.y), 1)
            } else {
                var l = e._q(e.nq(this.or).sQ([this.UY, 0]));
                this.eY = n.kw(this.or), this.EY = this.eY.x - n.kw(l).x
            }
            this.RY()
        }
    }), T.uY = function (t, i, n) {
        return new T.Circle(t, i, n)
    }, T.SVG = T.ZT.extend({
        CE: function () {
            var t = T.ZT.prototype.CE.call(this);
            return t.zoomstart = this.IY, t
        }, sW: function () {
            this.Ow = T.SVG.s("svg"), this.Ow.setAttribute("pointer-events", "none"), this._rootGroup = T.SVG.s("g"), this.Ow.appendChild(this._rootGroup)
        }, IY: function () {
            this.Oe()
        }, Oe: function () {
            if (!this.jE.ER || !this.Qr) {
                T.ZT.prototype.Oe.call(this);
                var t = this.Qr, i = t.getSize(), n = this.Ow;
                this._svgSize && this._svgSize.equals(i) || (this._svgSize = i, n.setAttribute("width", i.x), n.setAttribute("height", i.y)), T._Q.setPosition(n, t.min), n.setAttribute("viewBox", [t.min.x, t.min.y, i.x, i.y].join(" "))
            }
        }, wt: function (t) {
            var i = t.Yt = T.SVG.s("path");
            t.options.className && T._Q.Rq(i, t.options.className), t.options.mR && T._Q.Rq(i, "tdt-interactive"), this.Tt(t)
        }, Et: function (t) {
            this._rootGroup.appendChild(t.Yt), t.kE(t.Yt)
        }, et: function (t) {
            T._Q.Qq(t.Yt), t.LE(t.Yt)
        }, rt: function (t) {
            t.Rt(), t.Oe()
        }, Tt: function (t) {
            var i = t.Yt, n = t.options;
            i && (n.stroke ? (i.setAttribute("stroke", n.color), i.setAttribute("stroke-opacity", n.opacity), i.setAttribute("stroke-width", n.weight), i.setAttribute("stroke-linecap", n.Qt), i.setAttribute("stroke-linejoin", n.qt), n.dashArray ? i.setAttribute("stroke-dasharray", n.dashArray) : i.removeAttribute("stroke-dasharray"), n.dashOffset ? i.setAttribute("stroke-dashoffset", n.dashOffset) : i.removeAttribute("stroke-dashoffset")) : i.setAttribute("stroke", "none"), n.fill ? (i.setAttribute("fill", n.fillColor || n.color), i.setAttribute("fill-opacity", n.fillOpacity), i.setAttribute("fill-rule", n.Wt || "evenodd")) : i.setAttribute("fill", "none"))
        }, Mt: function (t, i) {
            this.iY(t, T.SVG.OY(t.Lt, i))
        }, TY: function (t) {
            var i = t.eY, n = t.EY, e = t.rY || n, o = "a" + n + "," + e + " 0 1,0 ",
                s = t.tY() ? "M0 0" : "M" + (i.x - n) + "," + i.y + o + 2 * n + ",0 " + o + 2 * -n + ",0 ";
            this.iY(t, s)
        }, iY: function (t, i) {
            t.Yt.setAttribute("d", i)
        }, Gr: function (t) {
            T._Q.Wq(t.Yt)
        }, tt: function (t) {
            T._Q.wq(t.Yt)
        }
    }), T.extend(T.SVG, {
        s: function (t) {
            return document.createElementNS("http://www.w3.org/2000/svg", t)
        }, OY: function (t, i) {
            var n, e, o, s, r, h, a = "";
            for (n = 0, o = t.length; n < o; n++) {
                for (r = t[n], e = 0, s = r.length; e < s; e++) h = r[e], a += (e ? "L" : "M") + h.x + " " + h.y;
                a += i ? T.oQ.MT ? "z" : "x" : ""
            }
            return a || "M0 0"
        }
    }), T.oQ.MT = !(!document.createElementNS || !T.SVG.s("svg").createSVGRect),T.MT = function (t) {
        return T.oQ.MT || T.oQ.vml ? new T.SVG(t) : null
    },T.oQ.vml = !T.oQ.MT && function () {
        try {
            var t = document.createElement("div");
            t.innerHTML = '<v:shape adj="1"/>';
            var i = t.firstChild;
            return i.style.behavior = "url(#default#VML)", i && "object" == typeof i.adj
        } catch (AO) {
            return !1
        }
    }(),T.SVG.M(T.oQ.vml ? {
        sW: function () {
            this.Ow = T._Q.s("div", "tdt-vml-container")
        }, Oe: function () {
            this.jE.ER || T.ZT.prototype.Oe.call(this)
        }, wt: function (t) {
            var i = t.Ow = T.SVG.s("shape");
            T._Q.Rq(i, "tdt-vml-shape " + (this.options.className || "")), i.coordsize = "1 1", t.Yt = T.SVG.s("path"), i.appendChild(t.Yt), this.Tt(t)
        }, Et: function (t) {
            var i = t.Ow;
            this.Ow.appendChild(i), t.options.mR && t.kE(i)
        }, et: function (t) {
            var i = t.Ow;
            T._Q.Qq(i), t.LE(i)
        }, Tt: function (t) {
            var i = t._stroke, n = t._fill, e = t.options, o = t.Ow;
            o.stroked = !!e.stroke, o.filled = !!e.fill, e.stroke ? (i || (i = t._stroke = T.SVG.s("stroke")), o.appendChild(i), i.weight = e.weight + "px", i.color = e.color, i.opacity = e.opacity, e.dashArray ? i.dashStyle = T.S.l(e.dashArray) ? e.dashArray.join(" ") : e.dashArray.replace(/( *, *)/g, " ") : i.dashStyle = "", i.endcap = e.Qt.replace("butt", "flat"), i.joinstyle = e.qt) : i && (o.removeChild(i), t._stroke = null), e.fill ? (n || (n = t._fill = T.SVG.s("fill")), o.appendChild(n), n.color = e.fillColor || e.color, n.opacity = e.fillOpacity) : n && (o.removeChild(n), t._fill = null)
        }, TY: function (t) {
            var i = t.eY.hQ(), n = Math.round(t.EY), e = Math.round(t.rY || n);
            this.iY(t, t.tY() ? "M0 0" : "AL " + i.x + "," + i.y + " " + n + "," + e + " 0,23592600")
        }, iY: function (t, i) {
            t.Yt.v = i
        }, Gr: function (t) {
            T._Q.Wq(t.Ow)
        }, tt: function (t) {
            T._Q.wq(t.Ow)
        }
    } : {}),T.oQ.vml && (T.SVG.s = function () {
        try {
            return document.namespaces.AQ("lvml", "urn:schemas-microsoft-com:vml"), function (t) {
                return document.createElement("<lvml:" + t + ' class="lvml">')
            }
        } catch (AO) {
            return function (t) {
                return document.createElement("<" + t + ' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')
            }
        }
    }()),T.mT = T.ZT.extend({
        onAdd: function () {
            T.ZT.prototype.onAdd.call(this), this.hW = this.hW || {}, this.oY()
        }, sW: function () {
            var t = this.Ow = document.createElement("canvas");
            T.oq.on(t, "mousemove", T.S.G(this.PY, 32, this), this).on(t, "click dblclick mousedown mouseup contextmenu", this.pY, this).on(t, "mouseout", this.AY, this), this.aY = t.getContext("2d")
        }, Oe: function () {
            if (!this.jE.ER || !this.Qr) {
                this.SY = {}, T.ZT.prototype.Oe.call(this);
                var t = this.Qr, i = this.Ow, n = t.getSize(), e = T.oQ.retina ? 2 : 1;
                T._Q.setPosition(i, t.min), i.width = e * n.x, i.height = e * n.y, i.style.width = n.x + "px", i.style.height = n.y + "px", T.oQ.retina && this.aY.scale(2, 2), this.aY.translate(-t.min.x, -t.min.y)
            }
        }, wt: function (t) {
            this._updateDashArray(t), this.hW[T.d(t)] = t
        }, Et: T.S.H, et: function (t) {
            t.sY = !0, this.DY(t)
        }, rt: function (t) {
            this.dY = t.vt, this.oY(!0), t.Rt(), t.Oe(), this.oY(), this.dY = null
        }, Tt: function (t) {
            this._updateDashArray(t), this.DY(t)
        }, _updateDashArray: function (t) {
            if (t.options.dashArray) {
                var i, n = t.options.dashArray.split(","), e = [];
                for (i = 0; i < n.length; i++) e.push(Number(n[i]));
                t.options._dashArray = e
            }
        }, DY: function (t) {
            if (this.jE) {
                var i = (t.options.weight || 0) + 1;
                this.dY = this.dY || new T.ZQ, this.dY.extend(t.vt.min.sQ([i, i])), this.dY.extend(t.vt.max.AQ([i, i])), this.FY = this.FY || T.S.C(this.fY, this)
            }
        }, fY: function () {
            this.FY = null, this.oY(!0), this.oY(), this.dY = null
        }, oY: function (t) {
            this.GY = t;
            var i, n = this.dY;
            this.aY.save(), n && (this.aY.beginPath(), this.aY.rect(n.min.x, n.min.y, n.max.x - n.min.x, n.max.y - n.min.y), this.aY.clip());
            for (var e in this.hW) i = this.hW[e], (!n || i.vt && i.vt.intersects(n)) && i.rt(), t && i.sY && (delete i.sY, delete this.hW[e]);
            this.aY.restore()
        }, Mt: function (t, i) {
            var n, e, o, s, r = t.Lt, h = r.length, a = this.aY;
            if (h) {
                for (this.SY[t.F] = t, a.beginPath(), a.setLineDash && a.setLineDash(t.options && t.options._dashArray || []), n = 0; n < h; n++) {
                    for (e = 0, o = r[n].length; e < o; e++) s = r[n][e], a[e ? "lineTo" : "moveTo"](s.x, s.y);
                    i && a.closePath()
                }
                this.gY(a, t)
            }
        }, TY: function (t) {
            if (!t.tY()) {
                var i = t.eY, n = this.aY, e = t.EY, o = (t.rY || e) / e;
                this.SY[t.F] = t, 1 !== o && (n.save(), n.scale(1, o)), n.beginPath(), n.arc(i.x, i.y / o, e, 0, 2 * Math.PI, !1), 1 !== o && n.restore(), this.gY(n, t)
            }
        }, gY: function (t, i) {
            var n = this.GY, e = i.options;
            t.globalCompositeOperation = n ? "destination-out" : "source-over", e.fill && (t.globalAlpha = n ? 1 : e.fillOpacity, t.fillStyle = e.fillColor || e.color, t.fill(e.Wt || "evenodd")), e.stroke && 0 !== e.weight && (t.globalAlpha = n ? 1 : e.opacity, i._prevWeight = t.lineWidth = n ? i._prevWeight + 1 : e.weight, t.strokeStyle = e.color, t.Qt = e.Qt, t.qt = e.qt, t.stroke())
        }, pY: function (t) {
            var i, n = this.jE.cw(t), e = [];
            for (var o in this.hW) i = this.hW[o], i.options.mR && i.HY(n) && !this.jE.IE(i) && (T.oq.hY(t), e.push(i));
            e.length && this.JY(e, t)
        }, PY: function (t) {
            if (this.jE && !this.jE.AE.moving() && !this.jE.ER) {
                var i = this.jE.cw(t);
                this.AY(t, i), this.jY(t, i)
            }
        }, AY: function (t, i) {
            var n = this.KY;
            !n || "mouseout" !== t.type && n.HY(i) || (T._Q.Tq(this.Ow, "tdt-interactive"), this.JY([n], t, "mouseout"), this.KY = null)
        }, jY: function (t, i) {
            var n, e;
            for (n in this.SY) e = this.SY[n], e.options.mR && e.HY(i) && (T._Q.Rq(this.Ow, "tdt-interactive"), this.JY([e], t, "mouseover"), this.KY = e);
            this.KY && this.JY([this.KY], t)
        }, JY: function (t, i, n) {
            this.jE.oE(i, n || i.type, t)
        }, Gr: T.S.H, tt: T.S.H
    }),T.oQ.nT = function () {
        return !!document.createElement("canvas").getContext
    }(),T.nT = function (t) {
        return T.oQ.nT ? new T.mT(t) : null
    },T.Polyline.prototype.HY = function (t, i) {
        var n, e, o, s, r, h, a = this.Ut();
        if (!this.vt.contains(t)) return !1;
        for (n = 0, s = this.Lt.length; n < s; n++) for (h = this.Lt[n], e = 0, r = h.length, o = r - 1; e < r; o = e++) if ((i || 0 !== e) && T.ut.ot(t, h[o], h[e]) <= a) return !0;
        return !1
    },T.Polygon.prototype.HY = function (t) {
        var i, n, e, o, s, r, h, a, u = !1;
        if (!this.vt.contains(t)) return !1;
        for (o = 0, h = this.Lt.length; o < h; o++) for (i = this.Lt[o], s = 0, a = i.length, r = a - 1; s < a; r = s++) n = i[s], e = i[r], n.y > t.y != e.y > t.y && t.x < (e.x - n.x) * (t.y - n.y) / (e.y - n.y) + n.x && (u = !u);
        return u || T.Polyline.prototype.HY.call(this, t, !0)
    },T.wY.prototype.HY = function (t) {
        return t.distanceTo(this.eY) <= this.EY + this.Ut()
    },T.GeoJSON = T.fT.extend({
        initialize: function (t, i) {
            T.setOptions(this, i), this.hW = {}, t && this.addData(t)
        }, addData: function (t) {
            var i, n, e, o = T.S.l(t) ? t : t.features;
            if (o) {
                for (i = 0, n = o.length; i < n; i++) e = o[i], (e.geometries || e.geometry || e.features || e.coordinates) && this.addData(e);
                return this
            }
            var s = this.options;
            if (s.filter && !s.filter(t)) return this;
            var r = T.GeoJSON.geometryToLayer(t, s);
            return r ? (r.feature = T.GeoJSON.kY(t), r.defaultOptions = r.options, this.resetStyle(r), s.onEachFeature && s.onEachFeature(t, r), this.addLayer(r)) : this
        }, resetStyle: function (t) {
            return t.options = T.S.extend({}, t.defaultOptions), this.LY(t, this.options.style), this
        }, setStyle: function (t) {
            return this.bE(function (i) {
                this.LY(i, t)
            }, this)
        }, LY: function (t, i) {
            "function" == typeof i && (i = i(t.feature)), t.setStyle && t.setStyle(i)
        }
    }),T.extend(T.GeoJSON, {
        geometryToLayer: function (t, i) {
            var n, e, o, s, r = "Feature" === t.type ? t.geometry : t, h = r ? r.coordinates : null, a = [],
                u = i && i.pointToLayer, c = i && i.coordsToLatLng || this.coordsToLatLng;
            if (!h && !r) return null;
            switch (r.type) {
                case"Point":
                    return n = c(h), u ? u(t, n) : new T.Marker(n);
                case"MultiPoint":
                    for (o = 0, s = h.length; o < s; o++) n = c(h[o]), a.push(u ? u(t, n) : new T.Marker(n));
                    return new T.fT(a);
                case"LineString":
                case"MultiLineString":
                    return e = this.coordsToLatLngs(h, "LineString" === r.type ? 0 : 1, c), new T.Polyline(e, i);
                case"Polygon":
                case"MultiPolygon":
                    return e = this.coordsToLatLngs(h, "Polygon" === r.type ? 1 : 2, c), new T.Polygon(e, i);
                case"GeometryCollection":
                    for (o = 0, s = r.geometries.length; o < s; o++) {
                        var l = this.geometryToLayer({
                            geometry: r.geometries[o],
                            type: "Feature",
                            properties: t.properties
                        }, i);
                        l && a.push(l)
                    }
                    return new T.fT(a)
            }
        }, coordsToLatLng: function (t) {
            return new T.dq(t[1], t[0], t[2])
        }, coordsToLatLngs: function (t, i, n) {
            for (var e, o = [], s = 0, r = t.length; s < r; s++) e = i ? this.coordsToLatLngs(t[s], i - 1, n) : (n || this.coordsToLatLng)(t[s]), o.push(e);
            return o
        }, lY: function (t) {
            return void 0 !== t.Fq ? [t.lng, t.lat, t.Fq] : [t.lng, t.lat]
        }, ZY: function (t, i, n) {
            for (var e = [], o = 0, s = t.length; o < s; o++) e.push(i ? T.GeoJSON.ZY(t[o], i - 1, n) : T.GeoJSON.lY(t[o]));
            return !i && n && e.push(e[0]), e
        }, CY: function (t, i) {
            return t.feature ? T.extend({}, t.feature, {geometry: i}) : T.GeoJSON.kY(i)
        }, kY: function (t) {
            return "Feature" === t.type ? t : {type: "Feature", properties: {}, geometry: t}
        }
    });
    var PointToGeoJSON = {
        toGeoJSON: function () {
            return T.GeoJSON.CY(this, {type: "Point", coordinates: T.GeoJSON.lY(this.PE())})
        }
    };
    T.Marker.M(PointToGeoJSON), T.Circle.M(PointToGeoJSON), T.wY.M(PointToGeoJSON), T.Polyline.prototype.toGeoJSON = function () {
        var t = !T.Polyline.ct(this.ht), i = T.GeoJSON.ZY(this.ht, t ? 1 : 0);
        return T.GeoJSON.CY(this, {type: (t ? "Multi" : "") + "LineString", coordinates: i})
    }, T.Polygon.prototype.toGeoJSON = function () {
        var t = !T.Polyline.ct(this.ht), i = t && !T.Polyline.ct(this.ht[0]),
            n = T.GeoJSON.ZY(this.ht, i ? 2 : t ? 1 : 0, !0);
        return t || (n = [n]), T.GeoJSON.CY(this, {type: (i ? "Multi" : "") + "Polygon", coordinates: n})
    }, T.LayerGroup.M({
        VY: function () {
            var t = [];
            return this.bE(function (i) {
                t.push(i.toGeoJSON().geometry.coordinates)
            }), T.GeoJSON.CY(this, {type: "MultiPoint", coordinates: t})
        }, toGeoJSON: function () {
            var t = this.feature && this.feature.geometry && this.feature.geometry.type;
            if ("MultiPoint" === t) return this.VY();
            var i = "GeometryCollection" === t, n = [];
            return this.bE(function (t) {
                if (t.toGeoJSON) {
                    var e = t.toGeoJSON();
                    n.push(i ? e.geometry : T.GeoJSON.kY(e))
                }
            }), i ? T.GeoJSON.CY(this, {geometries: n, type: "GeometryCollection"}) : {
                type: "FeatureCollection",
                features: n
            }
        }
    }), T.cY = function (t, i) {
        return new T.GeoJSON(t, i)
    }, T.BY = T.cY;
    var eventsKey = "_tdt_events";
    T.oq = {
        on: function (t, i, n, e) {
            if ("object" == typeof i) for (var o in i) this.QQ(t, o, i[o], n); else {
                i = T.S.j(i);
                for (var s = 0, r = i.length; s < r; s++) this.QQ(t, i[s], n, e)
            }
            return this
        }, off: function (t, i, n, e) {
            if ("object" == typeof i) for (var o in i) this.WQ(t, o, i[o], n); else {
                i = T.S.j(i);
                for (var s = 0, r = i.length; s < r; s++) this.WQ(t, i[s], n, e)
            }
            return this
        }, QQ: function (t, i, n, e) {
            var o = i + T.d(n) + (e ? "_" + T.d(e) : "");
            if (t[eventsKey] && t[eventsKey][o]) return this;
            var s = function (i) {
                return n.call(e || t, i || window.event)
            }, r = s;
            return T.oQ.pointer && 0 === i.indexOf("touch") ? this.vY(t, i, s, o) : T.oQ.touch && "dblclick" === i && this.NY ? this.NY(t, s, o) : "addEventListener" in t ? "mousewheel" === i ? t.addEventListener("onwheel" in t ? "wheel" : "mousewheel", s, !1) : "mouseenter" === i || "mouseleave" === i ? (s = function (i) {
                i = i || window.event, T.oq.iE(t, i) && r(i)
            }, t.addEventListener("mouseenter" === i ? "mouseover" : "mouseout", s, !1)) : ("click" === i && T.oQ.android && (s = function (t) {
                return T.oq.bY(t, r)
            }), t.addEventListener(i, s, !1)) : "attachEvent" in t && t.attachEvent("on" + i, s), t[eventsKey] = t[eventsKey] || {}, t[eventsKey][o] = s, this
        }, WQ: function (t, i, n, e) {
            var o = i + T.d(n) + (e ? "_" + T.d(e) : ""), s = t[eventsKey] && t[eventsKey][o];
            return s ? (T.oQ.pointer && 0 === i.indexOf("touch") ? this.removePointerListener(t, i, o) : T.oQ.touch && "dblclick" === i && this.MY ? this.MY(t, o) : "removeEventListener" in t ? "mousewheel" === i ? t.removeEventListener("onwheel" in t ? "wheel" : "mousewheel", s, !1) : t.removeEventListener("mouseenter" === i ? "mouseover" : "mouseleave" === i ? "mouseout" : i, s, !1) : "detachEvent" in t && t.detachEvent("on" + i, s), t[eventsKey][o] = null, this) : this
        }, stopPropagation: function (t) {
            return t.stopPropagation ? t.stopPropagation() : t.originalEvent ? t.originalEvent._stopped = !0 : t.cancelBubble = !0, T.oq.OE(t), this
        }, IT: function (t) {
            return T.oq.on(t, "mousewheel", T.oq.stopPropagation)
        }, iT: function (t) {
            var i = T.oq.stopPropagation;
            return T.oq.on(t, T.nY.START.join(" "), i), T.oq.on(t, {click: T.oq.hY, dblclick: i})
        }, preventDefault: function (t) {
            return t.preventDefault ? t.preventDefault() : t.returnValue = !1, this
        }, uw: function (t) {
            return T.oq.preventDefault(t).stopPropagation(t)
        }, Vw: function (t, i) {
            if (!i) return new T.Point(t.clientX, t.clientY);
            var n = i.getBoundingClientRect();
            return new T.Point(t.clientX - n.left - i.clientLeft, t.clientY - n.top - i.clientTop)
        }, _wheelPxFactor: T.oQ.win && T.oQ.chrome ? 2 : T.oQ.gecko ? window.PQ : 1, _Y: function (t) {
            return T.oQ.edge ? t.wheelDeltaY / 2 : t.deltaY && 0 === t.deltaMode ? -t.deltaY / T.oq._wheelPxFactor : t.deltaY && 1 === t.deltaMode ? 20 * -t.deltaY : t.deltaY && 2 === t.deltaMode ? 60 * -t.deltaY : t.deltaX || t.deltaZ ? 0 : t.wheelDelta ? (t.wheelDeltaY || t.wheelDelta) / 2 : t.detail && Math.abs(t.detail) < 32765 ? 20 * -t.detail : t.detail ? t.detail / -32765 * 60 : 0
        }, mY: {}, hY: function (t) {
            T.oq.mY[t.type] = !0
        }, OE: function (t) {
            var i = this.mY[t.type];
            return this.mY[t.type] = !1, i
        }, iE: function (t, i) {
            var n = i.relatedTarget;
            if (!n) return !0;
            try {
                for (; n && n !== t;) n = n.parentNode
            } catch (AO) {
                return !1
            }
            return n !== t
        }, bY: function (t, i) {
            var n = t.timeStamp || t.originalEvent && t.originalEvent.timeStamp, e = T.oq.QU && n - T.oq.QU;
            return e && e > 100 && e < 500 || t.target.qU && !t.uE ? void T.oq.uw(t) : (T.oq.QU = n, void i(t))
        }
    }, T.oq.addListener = T.oq.on, T.oq.removeListener = T.oq.off, T.nY = T.m.extend({
        options: {clickTolerance: 3},
        v: {
            START: T.oQ.touch ? ["touchstart", "mousedown"] : ["mousedown"],
            END: {mousedown: "mouseup", touchstart: "touchend", pointerdown: "touchend", MSPointerDown: "touchend"},
            MOVE: {
                mousedown: "mousemove",
                touchstart: "touchmove",
                pointerdown: "touchmove",
                MSPointerDown: "touchmove"
            }
        },
        initialize: function (t, i, n) {
            this.WU = t, this.wU = i || t, this.EU = n
        },
        enable: function () {
            this.eU || (T.oq.on(this.wU, T.nY.START.join(" "), this.RU, this), this.eU = !0)
        },
        disable: function () {
            this.eU && (T.oq.off(this.wU, T.nY.START.join(" "), this.RU, this), this.eU = !1, this.sw = !1)
        },
        RU: function (t) {
            if (!t.uE && this.eU && (this.sw = !1, !T._Q.Eq(this.WU, "tdt-zoom-anim") && !(T.nY._dragging || t.shiftKey || 1 !== t.which && 1 !== t.button && !t.touches) && this.eU && (T.nY._dragging = !0, this.EU && T._Q.Sq(this.WU), T._Q.Aq(), T._Q.Oq(), !this.rU))) {
                this.wQ("down");
                var i = t.touches ? t.touches[0] : t;
                this.TU = new T.Point(i.clientX, i.clientY), T.oq.on(document, T.nY.MOVE[t.type], this.fe, this).on(document, T.nY.END[t.type], this.tU, this)
            }
        },
        fe: function (t) {
            if (!t.uE && this.eU) {
                if (t.touches && t.touches.length > 1) return void (this.sw = !0);
                var i = t.touches && 1 === t.touches.length ? t.touches[0] : t, n = new T.Point(i.clientX, i.clientY),
                    e = n.sQ(this.TU);
                (e.x || e.y) && (Math.abs(e.x) + Math.abs(e.y) < this.options.clickTolerance || (T.oq.preventDefault(t), this.sw || (this.wQ("dragstart"), this.sw = !0, this.YU = T._Q.getPosition(this.WU).sQ(e), T._Q.Rq(document.body, "tdt-dragging"), this.UU = t.target || t.srcElement, window.SVGElementInstance && this.UU instanceof SVGElementInstance && (this.UU = this.UU.correspondingUseElement), T._Q.Rq(this.UU, "tdt-drag-target")), this.uU = this.YU.AQ(e), this.rU = !0, T.S.V(this.IU), this.iU = t, this.IU = T.S.C(this.WT, this, !0)))
            }
        },
        WT: function () {
            var t = {originalEvent: this.iU};
            this.wQ("OU", t), T._Q.setPosition(this.WU, this.uU), this.wQ("drag", t)
        },
        tU: function (t) {
            if (!t.uE && this.eU) {
                T._Q.Tq(document.body, "tdt-dragging"), this.UU && (T._Q.Tq(this.UU, "tdt-drag-target"), this.UU = null);
                for (var i in T.nY.MOVE) T.oq.off(document, T.nY.MOVE[i], this.fe, this).off(document, T.nY.END[i], this.tU, this);
                T._Q.aq(), T._Q.Pq(), this.sw && this.rU && (T.S.V(this.IU), this.wQ("dragend", {})), this.rU = !1, T.nY._dragging = !1
            }
        }
    }), T.Kr = T.c.extend({
        initialize: function (t) {
            this.jE = t
        }, enable: function () {
            return this.eU ? this : (this.eU = !0, this.oU(), this)
        }, disable: function () {
            return this.eU ? (this.eU = !1, this.Ar(), this) : this
        }, aE: function () {
            return !!this.eU
        }
    }), T.Map.n({AE: !0, PU: !T.oQ.android23, pU: 3400, AU: 1 / 0, aU: .2, SU: !0, sU: 0}), T.Map.DU = T.Kr.extend({
        oU: function () {
            if (!this.dU) {
                var t = this.jE;
                this.dU = new T.nY(t.ow, t.Ow), this.dU.on({
                    down: this.RU,
                    dragstart: this.FU,
                    drag: this.fU,
                    dragend: this.GU
                }, this), this.dU.on("OU", this.gU, this), t.options.SU && (this.dU.on("OU", this.HU, this), t.on("zoomend", this.hU, this), t.sE(this.hU, this))
            }
            T._Q.Rq(this.jE.Ow, "tdt-grab tdt-touch-drag"), this.dU.enable(), this.JU = [], this.jU = []
        }, Ar: function () {
            T._Q.Tq(this.jE.Ow, "tdt-grab"), T._Q.Tq(this.jE.Ow, "tdt-touch-drag"), this.dU.disable()
        }, moved: function () {
            return this.dU && this.dU.sw
        }, moving: function () {
            return this.dU && this.dU.rU
        }, RU: function () {
            this.jE.Iw()
        }, FU: function () {
            var t = this.jE;
            if (this.jE.options.maxBounds && this.jE.options.sU) {
                var i = T.jq(this.jE.options.maxBounds);
                this.KU = T.cQ(this.jE.BW(i.Zq()).fQ(-1), this.jE.BW(i.cq()).fQ(-1).AQ(this.jE.getSize())), this.kU = Math.min(1, Math.max(0, this.jE.options.sU))
            } else this.KU = null;
            t.wQ("movestart").wQ("dragstart"), t.options.PU && (this.JU = [], this.jU = [])
        }, fU: function (t) {
            if (this.jE.options.PU) {
                var i = this.LU = +new Date, n = this.lU = this.dU.ZU || this.dU.uU;
                this.JU.push(n), this.jU.push(i), i - this.jU[0] > 50 && (this.JU.shift(), this.jU.shift())
            }
            this.jE.wQ("move", t).wQ("drag", t)
        }, hU: function () {
            var t = this.jE.getSize().dQ(2), i = this.jE.kw([0, 0]);
            this.CU = i.sQ(t).x, this.VU = this.jE.Kw().getSize().x
        }, cU: function (t, i) {
            return t - (t - i) * this.kU
        }, gU: function () {
            if (this.kU && this.KU) {
                var t = this.dU.uU.sQ(this.dU.YU), i = this.KU;
                t.x < i.min.x && (t.x = this.cU(t.x, i.min.x)), t.y < i.min.y && (t.y = this.cU(t.y, i.min.y)), t.x > i.max.x && (t.x = this.cU(t.x, i.max.x)), t.y > i.max.y && (t.y = this.cU(t.y, i.max.y)), this.dU.uU = this.dU.YU.AQ(t)
            }
        }, HU: function () {
            var t = this.VU, i = Math.round(t / 2), n = this.CU, e = this.dU.uU.x, o = (e - i + n) % t + i - n,
                s = (e + i + n) % t - i - n, r = Math.abs(o + n) < Math.abs(s + n) ? o : s;
            this.dU.ZU = this.dU.uU.pQ(), this.dU.uU.x = r
        }, GU: function (t) {
            var i = this.jE, n = i.options, e = !n.PU || this.jU.length < 2;
            if (i.wQ("dragend", t), e) i.wQ("moveend"); else {
                var o = this.lU.sQ(this.JU[0]), s = (this.LU - this.jU[0]) / 1e3, r = n.aU, h = o.fQ(r / s),
                    a = h.distanceTo([0, 0]), u = Math.min(n.AU, a), c = h.fQ(u / a), l = u / (n.pU * r),
                    f = c.fQ(-l / 2).hQ();
                f.x || f.y ? (f = i.fE(f, i.options.maxBounds), T.S.C(function () {
                    i.panBy(f, {duration: l, aU: r, BU: !0, Tw: !0})
                })) : i.wQ("moveend")
            }
        }
    }), T.Map.M({
        enableDrag: function () {
            this.AE.enable()
        }, disableDrag: function () {
            this.AE.disable()
        }, isDrag: function () {
            return this.AE.eU
        }, enableInertia: function () {
            this.options.PU = !0
        }, disableInertia: function () {
            this.options.PU = !1
        }, isInertia: function () {
            return this.options.PU
        }
    }), T.Map._("iw", "AE", T.Map.DU), T.Map.n({vU: !0}), T.Map.NU = T.Kr.extend({
        initialize: function (t) {
            this.jE = t, this.Ow = t.Ow, this.overlayPane = t.aw.overlayPane, this._w = t.aw._w, this.markerPane = t.aw.markerPane, this.infoWindowPane = t.aw.infoWindowPane
        }, oU: function () {
            T.oq.on(this.jE, "zoomstart", this.IY, this), T.oq.on(this.jE, "zoomend", this.hU, this)
        }, Ar: function () {
            T.oq.off(this.jE, "zoomstart", this.IY), T.oq.off(this.jE, "zoomend", this.hU)
        }, IY: function (t) {
            this.jE.CW && (this.overlayPane.style.visibility = "hidden", this._w.style.visibility = "hidden", this.markerPane.style.visibility = "hidden", this.infoWindowPane.style.visibility = "hidden")
        }, hU: function (t) {
            this.jE.CW && (this.overlayPane.style.visibility = "inherit", this._w.style.visibility = "inherit", this.markerPane.style.visibility = "inherit", this.infoWindowPane.style.visibility = "inherit")
        }
    }), T.Map._("iw", "vU", T.Map.NU), T.Map.n({bU: !0}), T.Map.MU = T.Kr.extend({
        oU: function () {
            this.jE.on("dblclick", this.nU, this)
        }, Ar: function () {
            this.jE.off("dblclick", this.nU, this)
        }, nU: function (t) {
            var i = this.jE, n = i.getZoom(), e = i.options.aW, o = t.originalEvent.shiftKey ? n - e : n + e;
            return !(o > i.getMaxZoom()) && void ("center" === i.options.bU ? i.setZoom(o) : i.VW(t.containerPoint, o))
        }
    }), T.Map.M({
        enableDoubleClickZoom: function () {
            this.bU.enable()
        }, disableDoubleClickZoom: function () {
            this.bU.disable()
        }, isDoubleClickZoom: function () {
            return this.bU.eU
        }
    }), T.Map._("iw", "bU", T.Map.MU), T.Map.n({_U: !0, mU: 40, Qu: 70}), T.Map.qu = T.Kr.extend({
        oU: function () {
            T.oq.on(this.jE.Ow, "mousewheel", this.Wu, this), this.wu = 0
        }, Ar: function () {
            T.oq.off(this.jE.Ow, "mousewheel", this.Wu, this)
        }, Wu: function (t) {
            var i = T.oq._Y(t), n = this.jE.options.mU;
            this.wu += i, this.Eu = this.jE.Cw(t), this.eu || (this.eu = +new Date);
            var e = Math.max(n - (+new Date - this.eu), 0);
            clearTimeout(this.Ru), this.Ru = setTimeout(T.D(this.ru, this), e), T.oq.uw(t)
        }, ru: function () {
            var t = this.jE, i = t.getZoom(), n = this.jE.options.AW || 0;
            t.Iw();
            var e = this.wu / (4 * this.jE.options.Qu), o = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(e)))) / Math.LN2,
                s = n ? Math.ceil(o / n) * n : o, r = t.GW(i + (this.wu > 0 ? s : -s)) - i;
            this.wu = 0, this.eu = null, r && ("center" === t.options._U ? t.setZoom(i + r) : t.VW(this.Eu, i + r))
        }
    }), T.Map.M({
        enableScrollWheelZoom: function () {
            this._U.enable()
        }, disableScrollWheelZoom: function () {
            this._U.disable()
        }, isScrollWheelZoom: function () {
            return this._U.eU
        }
    }), T.Map._("iw", "_U", T.Map.qu), T.extend(T.oq, {
        Tu: T.oQ.msPointer ? "MSPointerDown" : T.oQ.pointer ? "pointerdown" : "touchstart",
        tu: T.oQ.msPointer ? "MSPointerUp" : T.oQ.pointer ? "pointerup" : "touchend",
        NY: function (t, i, n) {
            function e(t) {
                var i;
                if (i = T.oQ.pointer ? T.oq.Yu : t.touches.length, !(i > 1)) {
                    var n = Date.now(), e = n - (s || n);
                    r = t.touches ? t.touches[0] : t, h = e > 0 && e <= a, s = n
                }
            }

            function o() {
                if (h && !r.cancelBubble) {
                    if (T.oQ.pointer) {
                        var t, n, e = {};
                        for (n in r) t = r[n], e[n] = t && t.D ? t.D(r) : t;
                        r = e
                    }
                    r.type = "dblclick", i(r), s = null
                }
            }

            var s, r, h = !1, a = 250, u = "_tdt_", c = this.Tu, l = this.tu;
            return t[u + c + n] = e, t[u + l + n] = o, t[u + "dblclick" + n] = i, t.addEventListener(c, e, !1), t.addEventListener(l, o, !1), T.oQ.edge || t.addEventListener("dblclick", i, !1), this
        },
        MY: function (t, i) {
            var n = "_tdt_", e = t[n + this.Tu + i], o = t[n + this.tu + i], s = t[n + "dblclick" + i];
            return t.removeEventListener(this.Tu, e, !1), t.removeEventListener(this.tu, o, !1), T.oQ.edge || t.removeEventListener("dblclick", s, !1), this
        }
    }), T.extend(T.oq, {
        Uu: T.oQ.msPointer ? "MSPointerDown" : "pointerdown",
        uu: T.oQ.msPointer ? "MSPointerMove" : "pointermove",
        Iu: T.oQ.msPointer ? "MSPointerUp" : "pointerup",
        iu: T.oQ.msPointer ? "MSPointerCancel" : "pointercancel",
        TAG_WHITE_LIST: ["INPUT", "SELECT", "OPTION"],
        Ou: {},
        Yu: 0,
        vY: function (t, i, n, e) {
            return "touchstart" === i ? this.ou(t, n, e) : "touchmove" === i ? this.Pu(t, n, e) : "touchend" === i && this.pu(t, n, e), this
        },
        removePointerListener: function (t, i, n) {
            var e = t["_tdt_" + i + n];
            return "touchstart" === i ? t.removeEventListener(this.Uu, e, !1) : "touchmove" === i ? t.removeEventListener(this.uu, e, !1) : "touchend" === i && (t.removeEventListener(this.Iu, e, !1), t.removeEventListener(this.iu, e, !1)), this
        },
        ou: function (t, i, n) {
            var e = T.D(function (t) {
                if ("mouse" !== t.pointerType && t.pointerType !== t.MSPOINTER_TYPE_MOUSE) {
                    if (!(this.TAG_WHITE_LIST.indexOf(t.target.tagName) < 0)) return;
                    T.oq.preventDefault(t)
                }
                this.Au(t, i)
            }, this);
            if (t["_tdt_touchstart" + n] = e, t.addEventListener(this.Uu, e, !1), !this.au) {
                var o = T.D(this.Su, this);
                document.documentElement.addEventListener(this.Uu, T.D(this.su, this), !0), document.documentElement.addEventListener(this.uu, T.D(this.Du, this), !0), document.documentElement.addEventListener(this.Iu, o, !0), document.documentElement.addEventListener(this.iu, o, !0), this.au = !0
            }
        },
        su: function (t) {
            this.Ou[t.pointerId] = t, this.Yu++
        },
        Du: function (t) {
            this.Ou[t.pointerId] && (this.Ou[t.pointerId] = t)
        },
        Su: function (t) {
            delete this.Ou[t.pointerId], this.Yu--
        },
        Au: function (t, i) {
            t.touches = [];
            for (var n in this.Ou) t.touches.push(this.Ou[n]);
            t.changedTouches = [t], i(t)
        },
        Pu: function (t, i, n) {
            var e = T.D(function (t) {
                (t.pointerType !== t.MSPOINTER_TYPE_MOUSE && "mouse" !== t.pointerType || 0 !== t.buttons) && this.Au(t, i)
            }, this);
            t["_tdt_touchmove" + n] = e, t.addEventListener(this.uu, e, !1)
        },
        pu: function (t, i, n) {
            var e = T.D(function (t) {
                this.Au(t, i)
            }, this);
            t["_tdt_touchend" + n] = e, t.addEventListener(this.Iu, e, !1), t.addEventListener(this.iu, e, !1)
        }
    }), T.Map.n({du: !0}), T.Map.Fu = T.Kr.extend({
        initialize: function (t) {
            this.jE = t, this.Ow = t.Ow, this.fu = t.aw.overlayPane
        }, oU: function () {
            T.oq.on(this.Ow, "touchstart", this.Gu, this), T.oq.on(this.Ow, "touchmove", this.gu, this), T.oq.on(this.Ow, "touchend", this.Hu, this)
        }, Ar: function () {
            T.oq.off(this.Ow, "touchstart", this.Gu), T.oq.off(this.Ow, "touchmove", this.gu), T.oq.off(this.Ow, "touchend", this.Hu)
        }, Gu: function (t) {
            if (this.jE.CW) {
                var i = "touchstart";
                this.jE.wQ(i, this.hu(t));
                var n = this;
                return this.timer = setTimeout(function () {
                    n.jE.wQ("longpress", n.hu(t))
                }, 600), !1
            }
        }, gu: function (t) {
            if (this.jE.CW) {
                var i = "touchmove";
                this.jE.wQ(i, this.hu(t))
            }
        }, Hu: function (t) {
            if (this.jE.CW) {
                var i = "touchend";
                return this.jE.wQ(i, this.hu(t)), clearTimeout(this.timer), !1
            }
        }, hu: function (t) {
            if (t.touches && 0 != t.changedTouches.length) {
                var i = this.jE.Cw(t.changedTouches[0]), n = this.jE.Lw(i), e = this.jE.Dw(n),
                    o = {lnglat: e, layerPoint: n, containerPoint: i, originalEvent: t};
                return o
            }
        }
    }), T.Map._("iw", "du", T.Map.Fu), T.Map.n({Ju: T.oQ.touch && !T.oQ.android23, ju: !1}), T.Map.Ku = T.Kr.extend({
        oU: function () {
            T._Q.Rq(this.jE.Ow, "tdt-touch-zoom"), T.oq.on(this.jE.Ow, "touchstart", this.Gu, this)
        }, Ar: function () {
            T._Q.Tq(this.jE.Ow, "tdt-touch-zoom"), T.oq.off(this.jE.Ow, "touchstart", this.Gu, this)
        }, Gu: function (t) {
            var i = this.jE;
            if (t.touches && 2 === t.touches.length && !i.ER && !this.ku) {
                var n = i.Cw(t.touches[0]), e = i.Cw(t.touches[1]);
                this.Lu = i.getSize().FQ(2), this.lu = i.vW(this.Lu), "center" !== i.options.Ju && (this._pinchStartLatLng = i.vW(n.AQ(e).FQ(2))), this._startDist = n.distanceTo(e), this.Zu = i.getZoom(), this.sw = !1, this.ku = !0, i.Iw(), T.oq.on(document, "touchmove", this.gu, this).on(document, "touchend", this.Hu, this), T.oq.preventDefault(t)
            }
        }, gu: function (t) {
            if (t.touches && 2 === t.touches.length && this.ku) {
                var i = this.jE, n = i.Cw(t.touches[0]), e = i.Cw(t.touches[1]), o = n.distanceTo(e) / this._startDist;
                if (this.fW = i.gw(o, this.Zu), !i.options.ju && (this.fW < i.getMinZoom() && o < 1 || this.fW > i.getMaxZoom() && o > 1) && (this.fW = i.GW(this.fW)), "center" === i.options.Ju) {
                    if (this.BT = this.lu, 1 === o) return
                } else {
                    var s = n.aQ(e).FQ(2).DQ(this.Lu);
                    if (1 === o && 0 === s.x && 0 === s.y) return;
                    this.BT = i._q(i.nq(this._pinchStartLatLng, this.fW).sQ(s), this.fW)
                }
                this.sw || (i.qE(!0), this.sw = !0), T.S.V(this.IU);
                var r = T.D(i.QE, i, this.BT, this.fW, {pinch: !0, hQ: !1});
                this.IU = T.S.C(r, this, !0), T.oq.preventDefault(t)
            }
        }, Hu: function () {
            return this.sw && this.ku ? (this.ku = !1, T.S.V(this.IU), T.oq.off(document, "touchmove", this.gu).off(document, "touchend", this.Hu), void (this.jE.options.Nr ? this.jE.ge(this.BT, this.jE.GW(this.fW), !0, this.jE.options.snapZoom) : this.jE.ZW(this.BT, this.jE.GW(this.fW)))) : void (this.ku = !1)
        }
    }), T.Map.M({
        enablePinchToZoom: function () {
            this.Ju.enable()
        }, disablePinchToZoom: function () {
            this.Ju.disable()
        }, isPinchToZoom: function () {
            return this.Ju.eU
        }
    }), T.Map._("iw", "Ju", T.Map.Ku), T.Map.n({Cu: !0, Vu: 15}), T.Map.cu = T.Kr.extend({
        oU: function () {
            T.oq.on(this.jE.Ow, "touchstart", this.RU, this)
        }, Ar: function () {
            T.oq.off(this.jE.Ow, "touchstart", this.RU, this)
        }, RU: function (t) {
            if (t.touches) {
                if (T.oq.preventDefault(t), this.Bu = !0, t.touches.length > 1) return this.Bu = !1, void clearTimeout(this.vu);
                var i = t.touches[0], n = i.target;
                this.YU = this.uU = new T.Point(i.clientX, i.clientY), n.tagName && "a" === n.tagName.toLowerCase() && T._Q.Rq(n, "tdt-active"), this.vu = setTimeout(T.D(function () {
                    this.Nu() && (this.Bu = !1, this.tU(), this.bu("contextmenu", i))
                }, this), 1e3), this.bu("mousedown", i), T.oq.on(document, {
                    touchmove: this.fe,
                    touchend: this.tU
                }, this)
            }
        }, tU: function (t) {
            if (clearTimeout(this.vu), T.oq.off(document, {
                touchmove: this.fe,
                touchend: this.tU
            }, this), this.Bu && t && t.changedTouches) {
                var i = t.changedTouches[0], n = i.target;
                n && n.tagName && "a" === n.tagName.toLowerCase() && T._Q.Tq(n, "tdt-active"), this.bu("mouseup", i), this.Nu() && this.bu("click", i)
            }
        }, Nu: function () {
            return this.uU.distanceTo(this.YU) <= this.jE.options.Vu
        }, fe: function (t) {
            var i = t.touches[0];
            this.uU = new T.Point(i.clientX, i.clientY), this.bu("mousemove", i)
        }, bu: function (t, i) {
            var n = document.createEvent("MouseEvents");
            n.uE = !0, i.target.qU = !0, n.initMouseEvent(t, !0, !0, window, 1, i.screenX, i.screenY, i.clientX, i.clientY, !1, !1, !1, !1, 0, null), i.target.dispatchEvent(n)
        }
    }), T.oQ.touch && !T.oQ.pointer && T.Map._("iw", "Cu", T.Map.cu), T.Map.n({SE: !0}), T.Map.Mu = T.Kr.extend({
        initialize: function (t) {
            this.jE = t, this.Ow = t.Ow, this.fu = t.aw.overlayPane
        }, oU: function () {
            T.oq.on(this.Ow, "mousedown", this.nu, this)
        }, Ar: function () {
            T.oq.off(this.Ow, "mousedown", this.nu, this)
        }, moved: function () {
            return this.sw
        }, _u: function () {
            this.sw = !1
        }, nu: function (t) {
            return !(!t.shiftKey || 1 !== t.which && 1 !== t.button) && (this._u(), T._Q.Oq(), T._Q.Aq(), this.TU = this.jE.Cw(t), void T.oq.on(document, {
                contextmenu: T.oq.uw,
                mousemove: this.PY,
                mouseup: this.mu,
                keydown: this.QI
            }, this))
        }, PY: function (t) {
            this.sw || (this.sw = !0, this.qI = T._Q.s("div", "tdt-zoom-box", this.Ow), T._Q.Rq(this.Ow, "tdt-crosshair"), this.jE.wQ("boxzoomstart")), this.eY = this.jE.Cw(t);
            var i = new T.ZQ(this.eY, this.TU), n = i.getSize();
            T._Q.setPosition(this.qI, i.min), this.qI.style.width = n.x + "px", this.qI.style.height = n.y + "px"
        }, WI: function () {
            this.sw && (T._Q.Qq(this.qI), T._Q.Tq(this.Ow, "tdt-crosshair")), T._Q.Pq(), T._Q.aq(), T.oq.off(document, {
                contextmenu: T.oq.uw,
                mousemove: this.PY,
                mouseup: this.mu,
                keydown: this.QI
            }, this)
        }, mu: function (t) {
            if ((1 === t.which || 1 === t.button) && (this.WI(), this.sw)) {
                setTimeout(T.D(this._u, this), 0);
                var i = new T.Kq(this.jE.vW(this.TU), this.jE.vW(this.eY));
                this.jE._W(i).wQ("boxzoomend", {boxZoomBounds: i})
            }
        }, QI: function (t) {
            27 === t.keyCode && this.WI()
        }
    }), T.Map._("iw", "SE", T.Map.Mu), T.Map.n({Ir: !0, wI: 80}), T.Map.EI = T.Kr.extend({
        keyCodes: {
            left: [37],
            right: [39],
            down: [40],
            up: [38],
            zoomIn: [187, 107, 61, 171],
            zoomOut: [189, 109, 54, 173]
        }, initialize: function (t) {
            this.jE = t, this.eI(t.options.wI), this.RI(t.options.aW)
        }, oU: function () {
            var t = this.jE.Ow;
            t.tabIndex <= 0 && (t.tabIndex = "0"), T.oq.on(t, {
                focus: this.rI,
                blur: this.TI,
                mousedown: this.nu
            }, this), this.jE.on({focus: this.tI, blur: this.YI}, this)
        }, Ar: function () {
            this.YI(), T.oq.off(this.jE.Ow, {
                focus: this.rI,
                blur: this.TI,
                mousedown: this.nu
            }, this), this.jE.off({focus: this.tI, blur: this.YI}, this)
        }, nu: function () {
            if (!this.UI) {
                var t = document.body, i = document.documentElement, n = t.scrollTop || i.scrollTop,
                    e = t.scrollLeft || i.scrollLeft;
                this.jE.Ow.focus(), window.scrollTo(e, n)
            }
        }, rI: function () {
            this.UI = !0, this.jE.wQ("focus")
        }, TI: function () {
            this.UI = !1, this.jE.wQ("blur")
        }, eI: function (t) {
            var i, n, e = this._panKeys = {}, o = this.keyCodes;
            for (i = 0, n = o.left.length; i < n; i++) e[o.left[i]] = [-1 * t, 0];
            for (i = 0, n = o.right.length; i < n; i++) e[o.right[i]] = [t, 0];
            for (i = 0, n = o.down.length; i < n; i++) e[o.down[i]] = [0, t];
            for (i = 0, n = o.up.length; i < n; i++) e[o.up[i]] = [0, -1 * t]
        }, RI: function (t) {
            var i, n, e = this.uI = {}, o = this.keyCodes;
            for (i = 0, n = o.zoomIn.length; i < n; i++) e[o.zoomIn[i]] = t;
            for (i = 0, n = o.zoomOut.length; i < n; i++) e[o.zoomOut[i]] = -t
        }, tI: function () {
            T.oq.on(document, "keydown", this.QI, this)
        }, YI: function () {
            T.oq.off(document, "keydown", this.QI, this)
        }, QI: function (t) {
            if (!(t.altKey || t.ctrlKey || t.metaKey)) {
                var i, n = t.keyCode, e = this.jE;
                if (n in this._panKeys) {
                    if (e.EE && e.EE.aT) return;
                    i = this._panKeys[n], t.shiftKey && (i = T.SQ(i).fQ(3)), e.panBy(i), e.options.maxBounds && e.Ew(e.options.maxBounds)
                } else if (n in this.uI) e.setZoom(e.getZoom() + (t.shiftKey ? 3 : 1) * this.uI[n]); else {
                    if (27 !== n) return;
                    e.TT()
                }
                T.oq.uw(t)
            }
        }
    }), T.Map.M({
        enableKeyboard: function () {
            this.Ir.enable()
        }, disableKeyboard: function () {
            this.Ir.disable()
        }, isKeyboard: function () {
            return this.Ir.eU
        }
    }), T.Map._("iw", "Ir", T.Map.EI), T.Kr.jr = T.Kr.extend({
        initialize: function (t) {
            this.II = t
        }, oU: function () {
            var t = this.II.Fr;
            this.dU || (this.dU = new T.nY(t, t, !0)), this.dU.on({
                dragstart: this.FU,
                drag: this.fU,
                dragend: this.GU
            }, this).enable(), T._Q.Rq(t, "tdt-marker-draggable")
        }, Ar: function () {
            this.dU.off({
                dragstart: this.FU,
                drag: this.fU,
                dragend: this.GU
            }, this).disable(), this.II.Fr && T._Q.Tq(this.II.Fr, "tdt-marker-draggable")
        }, moved: function () {
            return this.dU && this.dU.sw
        }, FU: function () {
            this.II.TT().wQ("movestart").wQ("dragstart")
        }, fU: function (t) {
            var i = this.II, n = i.Hr, e = T._Q.getPosition(i.Fr), o = i.jE.Dw(e);
            n && T._Q.setPosition(n, e), i.or = o, t.lnglat = o, i.wQ("move", t).wQ("drag", t)
        }, GU: function (t) {
            var i = (this.II.Hr, T._Q.getPosition(this.II.Fr)), n = this.II.jE.Dw(i);
            this.II.or = n, t.lnglat = n, this.II.wQ("moveend").wQ("dragend", t)
        }
    }), T.Control = T.c.extend({
        options: {position: T_ANCHOR_TOP_RIGHT}, initialize: function (t) {
            T.setOptions(this, t)
        }, getPosition: function () {
            return this.options.position
        }, setPosition: function (t) {
            var i = this.jE;
            return i && i.removeControl(this), this.options.position = t, i && i.addControl(this), this
        }, getContainer: function () {
            return this.Ow
        }, show: function () {
            this.Ow.style.display = "block"
        }, hide: function () {
            this.Ow.style.display = "none"
        }, isHidden: function () {
            return "none" == this.Ow.style.display
        }, setOptions: function (t) {
            T.S.extend(this.options, t)
        }, setOffset: function (t) {
            this.point = t, this.Ow.style.left = t.x + "px", this.Ow.style.top = t.y + "px"
        }, getOffset: function () {
            return this.point
        }, addTo: function (t) {
            this.Qq(), this.jE = t;
            var i = this.Ow = this.onAdd(t), n = this.getPosition(), e = t.iI[n];
            return T._Q.Rq(i, "tdt-control"), n.indexOf("bottom") !== -1 ? e.insertBefore(i, e.firstChild) : e.appendChild(i), this
        }, Qq: function () {
            return this.jE ? (T._Q.Qq(this.Ow), this.onRemove && this.onRemove(this.jE), this.jE = null, this) : this
        }, OI: function (t) {
            this.jE && t && t.screenX > 0 && t.screenY > 0 && this.jE.getContainer().focus()
        }
    }), T.oI = function (t) {
        return new T.Control(t)
    }, T.Map.M({
        addControl: function (t) {
            return t.addTo(this), this.wQ("addcontrol", {addcontrol: t}), this
        }, removeControl: function (t) {
            return t.Qq(), this.wQ("removecontrol", {removecontrol: t}), this
        }, Mw: function () {
            function t(t, o) {
                var s = n + t + " " + n + o;
                i[t + o] = T._Q.s("div", s, e)
            }

            var i = this.iI = {}, n = "tdt-", e = this.PI = T._Q.s("div", n + "control-container", this.Ow);
            t("top", "left"), t("top", "right"), t("bottom", "left"), t("bottom", "right")
        }, Pw: function () {
            T._Q.Qq(this.PI)
        }
    }), T.Control.Zoom = T.Control.extend({
        options: {
            position: T_ANCHOR_TOP_LEFT,
            zoomInText: "+",
            zoomInTitle: "放大",
            zoomOutText: "-",
            zoomOutTitle: "缩小"
        }, onAdd: function (t) {
            var i = "tdt-control-zoom", n = T._Q.s("div", i + " tdt-bar"), e = this.options;
            return this.pI = this.AI(e.zoomInText, e.zoomInTitle, i + "-in", n, this.aI), this.SI = this.AI(e.zoomOutText, e.zoomOutTitle, i + "-out", n, this.sI), this.DI(), t.on("zoomend zoomlevelschange", this.DI, this), t.on("minzoom", this.DI, this), t.on("maxzoom", this.DI, this), n
        }, onRemove: function (t) {
            t.off("zoomend zoomlevelschange", this.DI, this), t.off("minzoom", this.DI, this), t.off("maxzoom", this.DI, this)
        }, disable: function () {
            return this.dI = !0, this.DI(), this
        }, enable: function () {
            return this.dI = !1, this.DI(), this
        }, aI: function (t) {
            this.dI || this.jE.zoomIn(this.jE.options.aW * (t.shiftKey ? 3 : 1))
        }, sI: function (t) {
            this.dI || this.jE.zoomOut(this.jE.options.aW * (t.shiftKey ? 3 : 1))
        }, AI: function (t, i, n, e, o) {
            var s = T._Q.s("a", n, e);
            return s.innerHTML = t, s.href = "#", s.title = i, T.oq.on(s, "mousedown dblclick", T.oq.stopPropagation).on(s, "click", T.oq.uw).on(s, "click", o, this).on(s, "click", this.OI, this), s
        }, DI: function () {
            var t = this.jE, i = "tdt-disabled";
            T._Q.Tq(this.pI, i), T._Q.Tq(this.SI, i), (this.dI || t.fW === t.getMinZoom()) && T._Q.Rq(this.SI, i), (this.dI || t.fW === t.getMaxZoom()) && T._Q.Rq(this.pI, i)
        }
    }), T.Map.n({FI: !1}), T.Map._(function () {
        this.options.FI && (this.FI = new T.Control.Zoom, this.addControl(this.FI))
    }), T.oI.zoom = function (t) {
        return new T.Control.Zoom(t)
    }, T.Control.fI = T.Control.extend({
        options: {
            position: T_ANCHOR_BOTTOM_LEFT,
            GI: '<div style="height:24px"><img style="background-color:transparent;background-image:url(' + T.w.e + "/logo.png);filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image,src=" + T.w.e + '/logo.png);MozOpacity:1;opacity:1;" src="' + T.w.e + '/logo.png" width="53px" height="22px" opacity="0"/><div style="display:inline;position:relative;bottom:4px;white-space:nowrap;padding:0 0 0 3px;">GS(2022)3124号 - 甲测资字1100471</div></div>'
        }, initialize: function (t) {
            T.setOptions(this, t), this.gI = {}
        }, onAdd: function (t) {
            t.cE = this, this.Ow = T._Q.s("div", "tdt-control-copyright"), T.oq && T.oq.iT(this.Ow);
            for (var i in t.hW) t.hW[i].VE && this.BE(t.hW[i].VE());
            return this.Oe(), this.Ow
        }, HI: function (t) {
            return this.options.GI = t, this.Oe(), this
        }, BE: function (t) {
            return t ? (this.gI[t] || (this.gI[t] = 0), this.gI[t]++, this.Oe(), this) : this
        }, NE: function (t) {
            return t ? (this.gI[t] && (this.gI[t]--, this.Oe()), this) : this
        }, Oe: function () {
            if (this.jE) {
                var t = [];
                for (var i in this.gI) this.gI[i] && t.push(i);
                var n = [];
                this.options.GI && n.push(this.options.GI), t.length && n.push(t.join(", ")), this.Ow.innerHTML = n.join(" | ")
            }
        }
    }), T.Map.n({cE: !0}), T.Map._(function () {
        this.options.cE && (new T.Control.fI).addTo(this)
    }), T.oI.Ue = function (t) {
        return new T.Control.fI(t)
    }, T.Control.Copyright = T.Control.fI.extend({
        options: {position: T_ANCHOR_BOTTOM_RIGHT, GI: ""}, initialize: function (t) {
            T.setOptions(this, t), this.hI = []
        }, addCopyright: function (t) {
            if (this.hI["str" + t.id]) return void alert("copyright id 重复");
            this.hI.push(t), this.hI["str" + t.id] = t;
            var i = T._Q.s("div", "tdt-control-copyright");
            T.oq && T.oq.iT(i), i.innerHTML = t.content, t._span = i, this.Ow.appendChild(i);
            var n = this.jE.getCenter();
            this.JI(n)
        }, removeCopyright: function (t) {
            this.Ow.removeChild(this.hI["str" + t.id]._span), this.hI["str" + t.id] = null;
            for (var i = 0; i < this.hI.length; i++) if (this.hI[i].id == t.id) {
                this.hI.splice(i, 1);
                break
            }
        }, JI: function (t) {
            if (this.jE) {
                if (t instanceof T.dq) var i = t; else var i = t.target.getCenter();
                for (var n = 0; n < this.hI.length; n++) this.hI[n].bounds && (this.hI[n].bounds.contains(i) ? "none" == this.hI[n]._span.style.display && (this.hI[n]._span.style.display = "") : this.hI[n]._span.style.display = "none")
            }
        }, getCopyright: function (t) {
            return this.hI["str" + t]
        }, getCopyrightCollection: function () {
            return this.hI
        }, onAdd: function (t) {
            return this.jE = t, t.cE = this, this.Ow = T._Q.s("div", "tdt-control-copyright"), T.oq && T.oq.iT(this.Ow), this.Oe(), this.jI = t.on("move", this.JI, this), this.Ow
        }, onRemove: function (t) {
            T._Q.Qq(this.Ow), this.Ow = null, t.off("move"), this.jI = null
        }
    }), T.Control.DataSources = T.Control.extend({
        options: {position: T_ANCHOR_BOTTOM_LEFT}, initialize: function (t) {
            T.setOptions(this, t), this.dataSources = new T.DataSources
        }, onAdd: function (t) {
            return this.jE = t, this.Ow = T._Q.s("div", "tdt-control-datasources"), T.oq && T.oq.iT(this.Ow), this.Ow.innerHTML = '<div style="height:24px">数据来源：国家地理信息公共服务平台</div>', this.Oe(), t.on("moveend", this.Oe, this), this.Ow
        }, onRemove: function () {
            T._Q.Qq(this.Ow), map.off("moveend", this.Oe, this), this.Ow = null
        }, getLayerArray: function () {
            for (var t = this.jE.getPanes().tilePane, i = ["vec", "cva", "ter", "cta", "img", "cia"], n = [], e = 0; e < i.length; e++) t.innerHTML.indexOf(i[e]) !== -1 && n.push(i[e]);
            return n.join(",")
        }, Oe: function () {
            if (this.jE) {
                var t = this.jE, i = this, n = t.getBounds(), e = n.getSouthWest(), o = n.getNorthEast(), s = "c";
                "EPSG:4326" != t.getCode() && (s = "w");
                var r = {
                    level: t.getZoom(),
                    bound: "'" + e.lng + "," + e.lat + "," + o.lng + "," + o.lat + "'",
                    layers: this.getLayerArray(),
                    projection: s
                };
                this.dataSourcesInfo = "", this.dataSources.search(r, function (t) {
                    var n = "";
                    null != t.ds && "null" != t.ds && (n = " & " + t.ds), i.dataSourcesInfo = "国家地理信息公共服务平台" + n, i.Ow.innerHTML = '<div style="height:24px">数据来源：国家地理信息公共服务平台' + n + "</div>"
                }), this.dataSourcesInfo = i.dataSourcesInfo
            }
        }, setColor: function (t) {
            return this.options.color = t, this.Ow.style.color = t, this
        }, getDataSources: function () {
            return this.dataSourcesInfo
        }
    }), T.oI.datasources = function (t) {
        return new T.Control.DataSources(t)
    }, T.Control.Scale = T.Control.extend({
        options: {position: T_ANCHOR_BOTTOM_LEFT, Cr: 100, KI: !0, kI: !0, type: 1}, onAdd: function (t) {
            var i = "tdt-control-scale", n = T._Q.s("div", i), e = this.options;
            return this.LI(e, i + "-line", n), t.on(e.te ? "moveend" : "move", this.Oe, this), t.sE(this.Oe, this), n
        }, onRemove: function (t) {
            t.off(this.options.te ? "moveend" : "move", this.Oe, this)
        }, setColor: function (t) {
            this.lI && (this.lI.style.borderColor = t, this.ZI.style.color = t), this.CI && 1 == this.type && (this.CI.style.borderColor = t, this.VI.style.color = t)
        }, LI: function (t, i, n) {
            this.type = t.type, t.KI && (this.lI = T._Q.s("div", i, n), this.ZI = T._Q.s("div", "tdt-control-scale-m", this.lI)), t.kI && 1 == t.type && (this.CI = T._Q.s("div", "tdt-control-scale-linebottom", n), this.VI = T._Q.s("div", "tdt-control-scale-i", this.CI))
        }, Oe: function () {
            var t = this.jE, i = t.getSize().y / 2, n = t.distance(t.vW([0, i]), t.vW([this.options.Cr, i]));
            this.cI(n)
        }, cI: function (t) {
            this.options.KI && t && this.BI(t), this.options.kI && t && 1 == this.type && this.vI(t)
        }, BI: function (t) {
            var i = this.NI(t), n = i < 1e3 ? i + " 米" : i / 1e3 + " 公里";
            this.bI(this.ZI, n, i / t, this.lI)
        }, vI: function (t) {
            var i, n, e, o = 3.2808399 * t;
            o > 5280 ? (i = o / 5280, n = this.NI(i), this.bI(this.VI, n + " 英里", n / i, this.CI)) : (e = this.NI(o), this.bI(this.VI, e + " 英尺", e / o, this.CI))
        }, bI: function (t, i, n, e) {
            e.style.width = Math.round(this.options.Cr * n) + "px", t.innerHTML = i
        }, NI: function (t) {
            var i = Math.pow(10, (Math.floor(t) + "").length - 1), n = t / i;
            return n = n >= 10 ? 10 : n >= 5 ? 5 : n >= 3 ? 3 : n >= 2 ? 2 : 1, i * n
        }
    }), T.oI.scale = function (t) {
        return new T.Control.Scale(t)
    }, T.Control.MI = T.Control.extend({
        options: {nI: !0, position: T_ANCHOR_TOP_RIGHT, _I: !0, mI: !1}, initialize: function (t, i, n) {
            T.setOptions(this, n), this.hW = [], this.Qi = 0, this.qi = !1;
            for (var e in t) this.Wi(t[e], e);
            for (e in i) this.Wi(i[e], e, !0)
        }, onAdd: function (t) {
            return this.DW(), this.Oe(), this.jE = t, t.on("zoomend", this.wi, this), this.Ow
        }, onRemove: function () {
            this.jE.off("zoomend", this.wi, this);
            for (var t = 0; t < this.hW.length; t++) this.hW[t].layer.off("add remove", this.Ei, this)
        }, addBaseLayer: function (t, i) {
            return this.Wi(t, i), this.jE ? this.Oe() : this
        }, addOverlay: function (t, i) {
            return this.Wi(t, i, !0), this.jE ? this.Oe() : this
        }, removeLayer: function (t) {
            t.off("add remove", this.Ei, this);
            var i = this._getLayer(T.d(t));
            return i && this.hW.splice(this.hW.indexOf(i), 1), this.jE ? this.Oe() : this
        }, expand: function () {
            T._Q.Rq(this.Ow, "tdt-control-layers-expanded"), this.ei.style.height = null;
            var t = this.jE.getSize().y - (this.Ow.offsetTop + 50);
            return t < this.ei.clientHeight ? (T._Q.Rq(this.ei, "tdt-control-layers-scrollbar"), this.ei.style.height = t + "px") : T._Q.Tq(this.ei, "tdt-control-layers-scrollbar"), this.wi(), this
        }, collapse: function () {
            return L.DomUtil.Tq(this.Ow, "tdt-control-layers-expanded"), this
        }, DW: function () {
            var t = "tdt-control-layers", i = this.Ow = T._Q.s("div", t);
            i.setAttribute("aria-haspopup", !0), T.oq.iT(i), T.oQ.touch || T.oq.IT(i);
            var n = this.ei = T._Q.s("form", t + "-list");
            if (this.options.nI) {
                T.oQ.android || T.oq.on(i, {mouseenter: this.expand, mouseleave: this.collapse}, this);
                var e = this.Ri = T._Q.s("a", t + "-toggle", i);
                e.href = "#", e.title = "MI", T.oQ.touch ? T.oq.on(e, "click", T.oq.uw).on(e, "click", this.expand, this) : T.oq.on(e, "focus", this.expand, this), T.oq.on(n, "click", function () {
                    setTimeout(T.D(this.ri, this), 0)
                }, this), this.jE.on("click", this.collapse, this)
            } else this.expand();
            this.Ti = T._Q.s("div", t + "-base", n), this.ti = T._Q.s("div", t + "-separator", n), this.Yi = T._Q.s("div", t + "-overlays", n), i.appendChild(n)
        }, _getLayer: function (t) {
            for (var i = 0; i < this.hW.length; i++) if (this.hW[i] && T.d(this.hW[i].layer) === t) return this.hW[i]
        }, Wi: function (t, i, n) {
            t.on("add remove", this.Ei, this), this.hW.push({
                layer: t,
                name: i,
                overlay: n
            }), this.options._I && t.setZIndex && (this.Qi++, t.setZIndex(this.Qi))
        }, Oe: function () {
            if (!this.Ow) return this;
            T._Q.qq(this.Ti), T._Q.qq(this.Yi);
            var t, i, n, e, o = 0;
            for (n = 0; n < this.hW.length; n++) e = this.hW[n], this.Ui(e), i = i || e.overlay, t = t || !e.overlay, o += e.overlay ? 0 : 1;
            return this.options.mI && (t = t && o > 1, this.Ti.style.display = t ? "" : "none"), this.ti.style.display = i && t ? "" : "none", this
        }, Ei: function (t) {
            this.qi || this.Oe();
            var i = this._getLayer(T.d(t.target)),
                n = i.overlay ? "AQ" === t.type ? "overlayadd" : "overlayremove" : "AQ" === t.type ? "baselayerchange" : null;
            n && this.jE.wQ(n, i)
        }, ui: function (t, i) {
            var n = '<input type="radio" class="tdt-control-layers-selector" name="' + t + '"' + (i ? ' checked="checked"' : "") + "/>",
                e = document.createElement("div");
            return e.innerHTML = n, e.firstChild
        }, Ui: function (t) {
            var i, n = document.createElement("label"), e = this.jE.hasLayer(t.layer);
            t.overlay ? (i = document.createElement("input"), i.type = "checkbox", i.className = "tdt-control-layers-selector", i.defaultChecked = e) : i = this.ui("tdt-base-layers", e), i.layerId = T.d(t.layer), T.oq.on(i, "click", this.ri, this);
            var o = document.createElement("span");
            o.innerHTML = " " + t.name;
            var s = document.createElement("div");
            n.appendChild(s), s.appendChild(i), s.appendChild(o);
            var r = t.overlay ? this.Yi : this.Ti;
            return r.appendChild(n), this.wi(), n
        }, ri: function () {
            var t, i, n, e = this.ei.getElementsByTagName("input"), o = [], s = [];
            this.qi = !0;
            for (var r = e.length - 1; r >= 0; r--) t = e[r], i = this._getLayer(t.layerId).layer, n = this.jE.hasLayer(i), t.checked && !n ? o.push(i) : !t.checked && n && s.push(i);
            for (r = 0; r < s.length; r++) this.jE.removeLayer(s[r]);
            for (r = 0; r < o.length; r++) this.jE.addLayer(o[r]);
            this.qi = !1, this.OI()
        }, wi: function () {
            for (var t, i, n = this.ei.getElementsByTagName("input"), e = this.jE.getZoom(), o = n.length - 1; o >= 0; o--) t = n[o], i = this._getLayer(t.layerId).layer, t.disabled = void 0 !== i.options.minZoom && e < i.options.minZoom || void 0 !== i.options.maxZoom && e > i.options.maxZoom
        }, Ii: function () {
            return this.expand()
        }, ii: function () {
            return this.collapse()
        }
    }), T.oI.layers = function (t, i, n) {
        return new T.Control.MI(t, i, n)
    }, T.Control.MapType = T.Control.extend({
        includes: T.iQ.OQ,
        options: {
            position: T_ANCHOR_TOP_RIGHT,
            behavior: "previous",
            expand: "horizontal",
            _I: !0,
            maxLayersInRow: 5,
            manageLayers: !0
        },
        initialize: function (t, i) {
            T.S.l(arguments[0]) || (i = t, this.Oi(), t = T.w.oi), T.setOptions(this, i), this._expandDirection = this.options.position.indexOf("left") != -1 ? "right" : "left", this.options.manageLayers && this.on("activelayerchange", this.Pi, this), this.pi(t)
        },
        Oi: function () {
            T.w.oi = [{
                title: "地图",
                icon: T.Icon.Default.imagePath + "/map/maptype/vector.png",
                layer: TMAP_NORMAL_MAP
            }, {
                title: "卫星",
                icon: T.Icon.Default.imagePath + "/map/maptype/satellite.png",
                layer: TMAP_SATELLITE_MAP
            }, {
                title: "卫星混合",
                icon: T.Icon.Default.imagePath + "/map/maptype/satellitepoi.png",
                layer: TMAP_HYBRID_MAP
            }, {
                title: "地形",
                icon: T.Icon.Default.imagePath + "/map/maptype/terrain.png",
                layer: TMAP_TERRAIN_MAP
            }, {
                title: "地形混合",
                icon: T.Icon.Default.imagePath + "/map/maptype/terrainpoi.png",
                layer: TMAP_TERRAIN_HYBRID_MAP
            }]
        },
        onAdd: function (t) {
            return this.Ow = T._Q.s("div", "tdt-iconLayers"), T._Q.Rq(this.Ow, "tdt-iconLayers_" + this.options.position), this.Ai(), t.on("click", this.collapse, this), this.options.manageLayers && this.Pi(), this.Ow
        },
        onRemove: function (t) {
            t.off("click", this.collapse, this)
        },
        pi: function (t) {
            this.hW = {}, t.map(function (t) {
                var i = T.d(t.layer);
                this.hW[i] = T.extend(t, {id: i})
            }.D(this)), this.Ow && this.Ai()
        },
        ai: function (t) {
            var i = t && this.hW[T.d(t)];
            i && i.id !== this._activeLayerId && (this._previousLayerId = this._activeLayerId, this._activeLayerId = i.id, this.Ow && this.Ai(), this.wQ("activelayerchange", {layer: t}))
        },
        expand: function () {
            this.Si().slice(1).map(function (t) {
                var i = this.si(t.id);
                T._Q.Tq(i, "tdt-iconLayers-layerCell_hidden")
            }.D(this))
        },
        collapse: function () {
            this.Si().slice(1).map(function (t) {
                var i = this.si(t.id);
                T._Q.Rq(i, "tdt-iconLayers-layerCell_hidden")
            }.D(this))
        },
        Di: function () {
            return this._activeLayerId ? this.hW[this._activeLayerId] : length(this.hW) ? first(this.hW) : null
        },
        di: function () {
            var t = this.Di();
            return t ? this._previousLayerId ? this.hW[this._previousLayerId] : find(this.hW, function (i) {
                return i.id !== t.id
            }.D(this)) || null : null
        },
        Fi: function () {
            var t = [], i = this.Di() ? this.Di().id : null, n = this.di() ? this.di().id : null;
            return each(this.hW, function (e) {
                e.id !== i && e.id !== n && t.push(e)
            }), t
        },
        Si: function () {
            var t = {};
            return t.previous = function () {
                var t = this.Fi();
                return this.Di() && t.unshift(this.Di()), this.di() && t.unshift(this.di()), t
            }, t[this.options.behavior].apply(this, arguments)
        },
        si: function (t) {
            if ("Microsoft Internet Explorer" != navigator.appName || "MSIE8.0" != navigator.appVersion.split(";")[1].replace(new RegExp("[ ]", "g"), "")) var i = this.Ow.getElementsByClassName("tdt-iconLayers-layerCell"); else var i = document.getElementsByClassName("tdt-iconLayers-layerCell", this.Ow);
            for (var n = 0; n < i.length; n++) if (i[n].getAttribute("data-layerid") == t) return i[n]
        },
        fi: function (t) {
            var i = T._Q.s("div", "tdt-iconLayers-layer");
            if (i.setAttribute("data-layerid", t.id), t.title) {
                var n = T._Q.s("div", "tdt-iconLayers-layerTitleContainer"),
                    e = T._Q.s("div", "tdt-iconLayers-layerTitle"), o = T._Q.s("div", "tdt-iconLayers-layerCheckIcon");
                e.innerHTML = t.title, n.appendChild(e), i.appendChild(n), i.appendChild(o)
            }
            return t.icon && i.setAttribute("style", "background-image: url('" + t.icon + "')"), i
        },
        Gi: function () {
            for (var t, i, n = this.Si(), e = this.Di() && this.Di().id, o = 0; o < n.length; o++) o % this.options.maxLayersInRow === 0 && (t = T._Q.s("div", "tdt-iconLayers-layersRow"), this.options.position.indexOf("bottom") === -1 ? this.Ow.appendChild(t) : prepend(this.Ow, t)), i = T._Q.s("div", "tdt-iconLayers-layerCell"), i.setAttribute("data-layerid", n[o].id), 0 !== o && T._Q.Rq(i, "tdt-iconLayers-layerCell_hidden"), n[o].id === e && T._Q.Rq(i, "tdt-iconLayers-layerCell_active"), "left" === this._expandDirection ? T._Q.Rq(i, "tdt-iconLayers-layerCell_expandLeft") : T._Q.Rq(i, "tdt-iconLayers-layerCell_expandRight"), i.appendChild(this.fi(n[o])), this.options.position.indexOf("right") === -1 ? t.appendChild(i) : prepend(t, i)
        },
        gi: function (t) {
            T.oq.stopPropagation(t);
            var i = (t.target || t.srcElement, (t.currentTarget || t.target || t.srcElement).getAttribute("data-layerid")),
                n = this.hW[i];
            "undefined" != typeof n && (this.ai(n.layer), this.expand())
        },
        Hi: function () {
            if (each(this.hW, function (t) {
                var i = this.si(t.id);
                i && T.oq.on(i, "click", this.gi.D(this))
            }.D(this)), "Microsoft Internet Explorer" != navigator.appName || "MSIE8.0" != navigator.appVersion.split(";")[1].replace(new RegExp("[ ]", "g"), "")) var t = this.Ow.getElementsByClassName("tdt-iconLayers-layersRow"); else var t = document.getElementsByClassName("tdt-iconLayers-layersRow", this.Ow);
            for (var i = function (t) {
                T.oq.stopPropagation(t), this.expand()
            }.D(this), n = function (t) {
                T.oq.stopPropagation(t), this.collapse()
            }.D(this), e = function (t) {
                T.oq.stopPropagation(t)
            }, o = 0; o < t.length; o++) {
                var s = t[o];
                T.oq.on(s, "mouseenter", i), T.oq.on(s, "mouseleave", n), T.oq.on(s, "mousemove", e)
            }
        },
        Ai: function () {
            this.Ow.innerHTML = "", this.Gi(), this.Hi()
        },
        Pi: function () {
            if (this.jE) {
                var t = this.Di(), i = this.di();
                i ? this.jE.clearMapType(i.layer) : each(this.hW, function (t) {
                    var i = t.layer;
                    this.jE.clearMapType(i)
                }.D(this)), t && this.jE.setMapType(t.layer)
            }
        }
    }), T.oI.maptype = function (t, i) {
        return new T.Control.MapType(t, i)
    }, Array.prototype.map || (Array.prototype.map = function (t, i) {
        var n, e, o;
        if (null == this) throw new TypeError(" this is null or not defined");
        var s = Object(this), r = s.length >>> 0;
        if ("[object Function]" != Object.prototype.toString.call(t)) throw new TypeError(t + " is not a function");
        for (i && (n = i), e = new Array(r), o = 0; o < r;) {
            var h, a;
            o in s && (h = s[o], a = t.call(n, h, o, s), e[o] = a), o++
        }
        return e
    }), Function.prototype.D || (Function.prototype.D = function (t) {
        if ("function" != typeof this) throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
        var i = Array.prototype.slice.call(arguments, 1), n = this, e = function () {
        }, o = function () {
            return n.apply(this instanceof e && t ? this : t, i.concat(Array.prototype.slice.call(arguments)))
        };
        return e.prototype = this.prototype, o.prototype = new e, o
    }), Array.prototype.indexOf || (Array.prototype.indexOf = function (t) {
        var i = -1;
        if (0 == this.length) return i;
        for (var n = 0; n < this.length; n++) if (this[n] === t) {
            i = n;
            break
        }
        return i
    }), document.getElementsByClassName || (document.getElementsByClassName = function (t, i) {
        for (var n = [], e = (i || document).getElementsByTagName("*"), o = e.length, s = t.split(" "), r = s.length, h = 0; h < o; h++) {
            for (var a = e[h].className.split(" "), u = (a.length, []), c = 0; c < r; c++) a.indexOf(s[c]) !== -1 && u.push(!0);
            u.length === r && n.push(e[h])
        }
        return n
    }), T.hi = T.m.extend({
        run: function (t, i, n, e) {
            this.uw(), this.Ji = t, this.aT = !0, this.ji = n || .25, this.Ki = 1 / Math.max(e || .5, .2), this.YU = T._Q.getPosition(t), this.ki = i.sQ(this.YU), this.eu = +new Date, this.wQ("start"), this.Li()
        }, uw: function () {
            this.aT && (this.li(!0), this.Zi())
        }, Li: function () {
            this.Ci = T.S.C(this.Li, this), this.li(!0)
        }, li: function (t) {
            var i = +new Date - this.eu, n = 1e3 * this.ji;
            i < n ? this.Vi(this.ci(i / n), t) : (this.Vi(1), this.Zi())
        }, Vi: function (t, i) {
            var n = this.YU.AQ(this.ki.fQ(t));
            i && n.JQ(), T._Q.setPosition(this.Ji, n), this.wQ("step")
        }, Zi: function () {
            T.S.V(this.Ci), this.aT = !1, this.wQ("end")
        }, ci: function (t) {
            return 1 - Math.pow(1 - t, this.Ki)
        }
    }), T.Map.M({
        gW: function (t, i, n) {
            if (i = void 0 === i ? this.fW : this.GW(i), t = this.Rw(T.fq(t), i, this.options.maxBounds), n = n || {}, this.Iw(), this.CW && !n.reset && n !== !0) {
                void 0 !== n.Tw && (n.zoom = T.extend({Tw: n.Tw}, n.zoom), n.qw = T.extend({
                    Tw: n.Tw,
                    duration: n.duration
                }, n.qw));
                var e = this.fW !== i ? this.Bi && this.Bi(t, i, n.zoom) : this.vi(t, n.qw);
                if (e) return clearTimeout(this.Uw), this
            }
            return this.ZW(t, i), this
        }, centerAndZoom: function (t, i, n) {
            this.gW(t, i, n), this.options.datasourcesControl && "undefined" == typeof this.mapDataSources && (this.mapDataSources = (new T.Control.DataSources).addTo(this))
        }, getDataSources: function () {
            return this.mapDataSources
        }, panBy: function (t, i) {
            if (t = T.SQ(t).hQ(), i = i || {}, !t.x && !t.y) return this.wQ("moveend");
            if (i.Tw !== !0 && !this.getSize().contains(t)) return this.ZW(this._q(this.nq(this.getCenter()).AQ(t)), this.getZoom()), this;
            if (this.EE || (this.EE = new T.hi, this.EE.on({
                step: this.Ni,
                end: this.bi
            }, this)), i.BU || this.wQ("movestart"), i.Tw !== !1) {
                T._Q.Rq(this.ow, "tdt-pan-anim");
                var n = this.lw().sQ(t).hQ();
                this.EE.run(this.ow, n, i.duration || .25, i.aU)
            } else this.Ww(t), this.wQ("move").wQ("moveend");
            return this
        }, Ni: function () {
            this.wQ("move")
        }, bi: function () {
            T._Q.Tq(this.ow, "tdt-pan-anim"), this.wQ("moveend")
        }, vi: function (t, i) {
            var n = this.dE(t).KQ();
            return !((i && i.Tw) !== !0 && !this.getSize().contains(n)) && (this.panBy(n, i), !0)
        }
    }), T.Map.n({Nr: !0, Mi: 4});
    var zoomAnimated = T._Q.Iq && T.oQ.any3d && !T.oQ.mobileOpera;
    zoomAnimated && T.Map._(function () {
        this.ZE = this.options.Nr, this.ZE && (this.ni(), T.oq.on(this._i, T._Q.iq, this.mi, this))
    }), T.Map.M(zoomAnimated ? {
        ni: function () {
            var t = this._i = T._Q.s("div", "tdt-proxy tdt-zoom-animated");
            this.aw.mapPane.appendChild(t), this.on("Ge", function (i) {
                var n = T._Q.uq, e = t.style[n];
                T._Q.Uq(t, this.nq(i.center, i.zoom), this.cW(i.zoom, 1)), e === t.style[n] && this.ER && this.QO()
            }, this), this.on("load moveend", function () {
                var i = this.getCenter(), n = this.getZoom();
                T._Q.Uq(t, this.nq(i, n), this.cW(n, 1))
            }, this)
        }, mi: function (t) {
            this.ER && t.propertyName.indexOf("bQ") >= 0 && this.QO()
        }, qO: function () {
            return !this.Ow.getElementsByClassName("tdt-zoom-animated").length
        }, Bi: function (t, i, n) {
            if (this.ER) return !0;
            if (n = n || {}, !this.ZE || n.Tw === !1 || this.qO() || Math.abs(i - this.fW) > this.options.Mi) return !1;
            var e = this.cW(i), o = this.dE(t).FQ(1 - 1 / e);
            return !(n.Tw !== !0 && !this.getSize().contains(o)) && (T.S.C(function () {
                this.qE(!0).ge(t, i, !0)
            }, this), !0)
        }, ge: function (t, i, n, e) {
            n && (this.ER = !0, this.WO = t, this.RR = i, T._Q.Rq(this.ow, "tdt-zoom-anim")), this.wQ("Ge", {
                center: t,
                zoom: i,
                noUpdate: e
            }), setTimeout(T.D(this.QO, this), 250)
        }, QO: function () {
            this.ER && (T._Q.Tq(this.ow, "tdt-zoom-anim"), this.ER = !1, this.QE(this.WO, this.RR), T.S.C(function () {
                this.mw(!0)
            }, this))
        }
    } : {}), T.Map.M({
        enableContinuousZoom: function () {
            this.options.Mi = 4
        }, disableContinuousZoom: function () {
            this.options.Mi = 0
        }, isContinuousZoom: function () {
            return 4 == this.options.Mi
        }
    }), T.Map.M({
        Ne: function (t, i, n) {
            function e(t) {
                var i = t ? -1 : 1, n = t ? v : m, e = v * v - m * m + i * g * g * w * w, o = 2 * n * g * w, s = e / o,
                    r = Math.sqrt(s * s + 1) - s, h = r < 1e-9 ? -18 : Math.log(r);
                return h
            }

            function o(t) {
                return (Math.exp(t) - Math.exp(-t)) / 2
            }

            function s(t) {
                return (Math.exp(t) + Math.exp(-t)) / 2
            }

            function r(t) {
                return o(t) / s(t)
            }

            function h(t) {
                return m * (s(E) / s(E + y * t))
            }

            function a(t) {
                return m * (s(E) * r(E + y * t) - o(E)) / g
            }

            function u(t) {
                return 1 - Math.pow(1 - t, 1.5)
            }

            function c() {
                var n = (Date.now() - Q) / x, e = u(n) * q;
                n <= 1 ? (this.wE = T.S.C(c, this), this.QE(this._q(l.AQ(f.sQ(l).fQ(a(e) / w)), p), this.gw(m / h(e), p), {Ne: !0})) : this.QE(t, i).mw(!0)
            }

            if (n = n || {}, n.Tw === !1 || !T.oQ.any3d) return this.gW(t, i, n);
            this.Iw();
            var l = this.nq(this.getCenter()), f = this.nq(t), d = this.getSize(), p = this.fW;
            t = T.fq(t), i = void 0 === i ? p : i;
            var m = Math.max(d.x, d.y), v = m * this.cW(p, i), w = f.distanceTo(l) || 1, y = 1.42, g = y * y, E = e(0),
                Q = Date.now(), q = (e(1) - E) / y, x = n.duration ? 10 * n.duration : 10 * q * .8;
            return this.qE(!0), c.call(this), this
        }, wO: function (t, i) {
            var n = this.NW(t, i);
            return this.Ne(n.center, n.zoom, i)
        }
    }), T.Map.M({
        EO: {eO: 1e4, watch: !1}, RO: function (t) {
            if (t = this.rO = T.extend({}, this.EO, t), !("geolocation" in navigator)) return this.TO({
                code: 0,
                message: "tO"
            }), this;
            var i = T.D(this.YO, this), n = T.D(this.TO, this);
            return t.watch ? this.UO = navigator.geolocation.watchPosition(i, n, t) : navigator.geolocation.getCurrentPosition(i, n, t), this
        }, uO: function () {
            return navigator.geolocation && navigator.geolocation.clearWatch && navigator.geolocation.clearWatch(this.UO), this.rO && (this.rO.gW = !1), this
        }, TO: function (t) {
            var i = t.code, n = t.message || (1 === i ? "IO" : 2 === i ? "iO" : "eO");
            this.rO.gW && !this.CW && this.mW(), this.wQ("OO", {code: i, message: "oO" + n + "."})
        }, YO: function (t) {
            var i = t.coords.latitude, n = t.coords.longitude, e = new T.dq(i, n), o = e.Jq(t.coords.accuracy),
                s = this.rO;
            if (s.gW) {
                var r = this.nW(o);
                this.gW(e, s.maxZoom ? Math.min(r, s.maxZoom) : r)
            }
            var h = {KT: e, bounds: o, PO: t.PO};
            for (var a in t.coords) "number" == typeof t.coords[a] && (h[a] = t.coords[a]);
            this.wQ("pO", h)
        }
    });
    for (var n = 0; n < T.w.a.length; n++) T.lR.MR("TDT_style" + n, T.w.E + T.w.a[n]);
    for (var m = 0; m < T.w.A.length; m++) T.lR.nR("TDT_components" + m, T.w.E + T.w.A[m]);
    T.lR.bR(T.w.E + "/qv?tk=" + T.w.TMAP_AUTHKEY + "&t=" + Math.random() + "&callback=T.qv");
})();
